WPF布局控件的选用策略
2011-12-17 21:43
260 查看
Windows Presentation Foundations (WPF)提供了多种布局面板,常用的包括Canvas、StackPanel、Grid、DockPanel。本文将要介绍如何选用这些控件,以便窗体大小改变时依然能够正确地布局。
图1
标签停放在DockPanel的左边,按钮停放在DockPanel的右边,最后加入的控件默认会占据DockPanel的剩余空间。
如果将多个控件停放在一边,如都是Left,就可以实现图2。
图2
DockPanel的缺点是,被锚定的控件的左右两边必须有控件让它挨着。如果坚持用DockPanel,就要在被锚定控件前(以XAML的阅读顺序)加入两个没用的不可见的控件。这是不优雅的。此问题的解决方法是用Grid。
你当然可以注释掉关于Label和Button的两句代码,TextBox依然被正确地定位。
用Grid的缺点是在WPF逻辑树中会有相应数量的ColumnDefinitio对象,比DockPanel相对“重”一点。
目前就想到这些,以后再补充。
爱让一切都对了
本文依照知识共享-署名-相同方式共享3.0协议发表
锚定(Anchor)
锚定是Windows窗体应用程序中常用的布局技术。如果你不了解,可以在VS里新建一个Windows窗体应用程序,放一个按钮,然后设置其Anchor属性为不同的值,然后查看效果。WPF的控件没有Anchor这种属性,我们需要用面板来实现锚定效果。在图1中,中间的TextBox设置了锚定,Anchor=Left|Right。图1
用DockPanel实现
<DockPanel VerticalAlignment="Center"> <Label Content="保存位置:" DockPanel.Dock="Left" /> <Button Content=".." DockPanel.Dock="Right"/> <TextBox Text="C:\Windows"/> </DockPanel>
标签停放在DockPanel的左边,按钮停放在DockPanel的右边,最后加入的控件默认会占据DockPanel的剩余空间。
如果将多个控件停放在一边,如都是Left,就可以实现图2。
图2
DockPanel的缺点是,被锚定的控件的左右两边必须有控件让它挨着。如果坚持用DockPanel,就要在被锚定控件前(以XAML的阅读顺序)加入两个没用的不可见的控件。这是不优雅的。此问题的解决方法是用Grid。
用Grid实现
用Grid实现图1,代码如下。<Grid VerticalAlignment="Center"> <Grid.ColumnDefinitions> <ColumnDefinition Width="auto" /> <ColumnDefinition /> <ColumnDefinition Width="auto" /> </Grid.ColumnDefinitions> <Label Content="保存位置:" Grid.Column="0" /> <TextBox Text="C:\Windows" Grid.Column="1" /> <Button Content=".." Grid.Column="2" /> </Grid>
你当然可以注释掉关于Label和Button的两句代码,TextBox依然被正确地定位。
用Grid的缺点是在WPF逻辑树中会有相应数量的ColumnDefinitio对象,比DockPanel相对“重”一点。
目前就想到这些,以后再补充。
爱让一切都对了
本文依照知识共享-署名-相同方式共享3.0协议发表
相关文章推荐
- WPF布局控件的选用策略
- WPF 布局控件 之 Canvas
- 一、WPF布局之让你的控件随着窗口等比放大缩小,适应多分辨率满屏填充应用
- WPF中的布局控件
- WPF布局控件常用属性介绍
- C#学习笔记-WPF前端布局和控件的使用
- WPF 布局控件 之 StatickPanel
- wpf之布局控件stackpanel、wrappanel、dockpanel的前世今生
- WPF-Grid布局控件学习
- WPF布局控件
- WPF布局控件简单介绍
- WPF中的控件布局
- WPF 布局控件 之 DockPanel
- 深入浅出WPF----第五章----控件与布局
- 【C#/WPF】GridSplitter 分割布局,拖拽控件分隔栏以改变控件尺寸
- WPF 布局控件 之 WrapPanel
- WPF学习之控件与布局
- WPF学习第六集-控件与布局
- WPF中的控件布局
- WPF布局该如何选用