看了一周多了C#和.NET了,还没有搞清楚 visual C# 中WPF的界面设计器的布局怎么弄,以及常用的控件分别有哪些。
接下来看看WPF中的控件与布局。
继承关系?
没有图片,用表格凑活一下
继承关系
|
该类继承的Interface
|
|
|
|
V
|
|
V
|
ContentControl
|
IAddChild
|
--> Window、Button等各类控件都派生自这儿
|
Control
|
|
|
FrameworkElement
|
IFrameworkInputElement
IInputElement
ISupportInitialize
IHaveResources
IQueryAmbient
|
-->布局Panel,各类形状Shape 都派生自这儿
|
UIElement
|
IAnimatable
IInputElement
|
|
Visual
|
DUCE.IResource
|
|
DependencyObject
|
|
|
DispatcherObject
|
|
|
布局
在WPF中,这些东西被称为Panel。在Qt中称为 Layout
Canvas
|
画布,感觉上,这个东西应该不算布局了,需要手动指定其上各个控件的位置和大小。(WPF,每一个控件中只能指定一个子控件?)
|
DockPanel
|
水平或竖直地布局子元素,相对于另一个
|
Grid
|
网格状布局,类比Qt中的QGridLayout
|
StackPanel
|
水平或竖直布局所有子元素,类比 Qt中的 QBoxLayout,而和QStackedLayout没有共同点
|
VirtualizingPanel
|
使部分子元素可见(抽象类)
|
WrapPanel
|
子元素可以自动换行,类比Qt中的 Flow Layout
|
在Qt中,每个Widget都有一个被称为QSizePolicy的东西,用来控制自己在布局中的变化的意愿。在 WPF 中,类似的东西称为Alignment(对齐)
HorizontalAlignment
|
Left
Right
Center Stretch
|
VerticalAlignment
|
Top
Center
Bottom Stretch
|
除此外,每个控件还有两个重要属性
Grid
1个2X2的网格布局,
-
首先定义行和列的属性(自动,固定,按比例)
- 放置各个控件(控件通过自己的附加属性来告诉布局额外的信息)
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Slider Name="slider1" VerticalAlignment="Center" />
<Slider Name="slider2" VerticalAlignment="Center" Grid.Row="1" />
<TextBox Name="textBox1" VerticalAlignment="Center" Grid.Column="1" />
<TextBox Name="textBox2" VerticalAlignment="Center" Grid.Column="1" Grid.Row="1" />
</Grid>
StackPanel
相当于Qt中QBoxLayout,重要属性就是方向:水平、竖直
<StackPanel Orientation="Horizontal">
<ListBox Name="listBox1" Width="100" />
<TabControl Name="tabControl1" Width="200">
<TabItem Header="tabItem1" Name="tabItem1">
<Grid />
</TabItem>
</TabControl>
</StackPanel>
DockPanel
这个东西比较有意思,应该也是很有用了。由于每个控件都要Top/Botton/Left/Right这样靠在一个边上,所以剩下的空间总是一个矩形,而后来的控件占据该矩形一边后,又形成一个新的矩形。
<DockPanel Name="dockPanel1">
<ProgressBar Height="20" Name="progressBar1" DockPanel.Dock="Top" VerticalAlignment="Top" />
<MediaElement Name="mediaElement1" Width="160" HorizontalAlignment="Left" />
<ScrollBar Name="scrollBar1" Orientation="Horizontal" Height="20" VerticalAlignment="Bottom" />
<WebBrowser Name="webBrowser1" />
</DockPanel>
一个重要属性是:LastChildFill
其他
类似于Qt中的QSplitter,WPF中有个GridSplitter
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition />
</Grid.ColumnDefinitions>
<GridSplitter Grid.Column="0" Grid.RowSpan="2" Width="10" Background="Red" />
<Slider Name="slider1" VerticalAlignment="Center" />
<Slider Name="slider2" VerticalAlignment="Center" Grid.Row="1" />
<TextBox Name="textBox1" VerticalAlignment="Center" Grid.Column="1" />
<TextBox Name="textBox2" VerticalAlignment="Center" Grid.Column="1" Grid.Row="1" />
</Grid>
参考
分享到:
相关推荐
通过自定义扩展VirtualizingPanel,结合ListBox控件,实现了界面布局的灵活配置,支持1*2,1*3,2*2等任何布局方式,并且支持滚动条
WPF页面布局,界面操作,设计各种样式嵌套,适用各种数据显示方式等等
本资源演示WPF主要布局控件以及如何自定义布局面板。 WPF作为专门的用户界面技术,布局功能是它的核心功能之一。友好的用户界面和良好的用户体验离不开设计精良的布局。日常工作中,WPF设计师工作量最大的两部分...
WPF自定义Panel
wpf控件简单布局wpf控件简单布局wpf控件简单布局
WPF自定义Panel布局FishEyeDemo
wpf Grid布局 简单介绍Grid布局控件的基本属性
基础的wpf布局,计算器,入门级的首选,学习wpf的小白可以看看
在WPF中子元素的绝对定位的布局控件 其子元素使用Width、Height定义元素的宽度和高度 使用Convas.Left(Convas.Right)、Convas.Top(Convas.Bottom)定义与Convas容器的相对位置..... (更多资源:...
WPF布局全接触,多种布局分析,有助于理解wpf定位。很有益处
史上最全的WPF布局示例
C# WPF中常用的几种布局容器 StackPanel 、Border 、Wrap Panel 、DockPanel
WPF编程学习——布局 1.布局简介 2.面板(Panel) 3.视图框(Viewbox) 4.滚动视图控件(ScrollViewer) 5.公共布局属性
主要介绍了WPF的ListView控件自定义布局的方法,结合实例形式分析了WPF中ListView控件的布局方法,需要的朋友可以参考下
这是一些常用的Wpf布局运用实例, 可以下载学习一下。
WPF环形布局
一种WPF自定义容器控件,可实现在Canvas上的Move或Resize
WPF控件和布局,适用于初学者,里面附有程序代码
wpf 布局的一些示例
VS2013下WPF实现数字键盘,点击界面上的输入框,能够自动弹出数字键盘,显示3x4 布局的软键盘,有半透明效果