在WPF中实现窗口分栏并能够通过鼠标改变大小已经非常容易,例如将一个GRID分成竖排三栏显示,就可以将GRID先分成5列,其中两个固定列放GridSplitter。
class="code_img_closed" src="/Upload/Images/2013111217/0015B68B3C38AA5B.gif" alt="" />logs_code_hide('2ed2bdf0-8b07-488f-bbe6-3fbe86894267',event)" src="/Upload/Images/2013111217/2B1B950FA3DF188F.gif" alt="" /><Grid Background="#FFEDFFFB" Name="grid1"> <Grid.ColumnDefinitions> <ColumnDefinition Width="3*" /> <ColumnDefinition Width="10" /> <ColumnDefinition Width="1*" /> <ColumnDefinition Width="10" /> <ColumnDefinition Width="1*" /> </Grid.ColumnDefinitions>View Code
但是每次改变窗口的大小,我们都要去拖动GridSplitter,这里为了偷懒,我们能不能直接某些按钮或选择框,来改变窗口的显示甚至隐藏。由于是改变每一栏的宽度,这里我们自然想到的是Grid.ColumnDefinitions的Width属性,他是GridLength类型参数,所以我们只要重新构造一个GridLength参数给Width就能够通过代码改变窗口大小。在http://technet.microsoft.com/zh-cn/library/system.windows.gridlength_members(v=vs.90).aspx这里,查看GridLength的构造函数,有两种方法,当然我们可以利用第一种方法GridLength(Double)直接给出每一栏的宽度,但是如果以后我们还想在窗口中拖动GridSplitter改变窗口大小就不再可能了。
所以,这里我用第二种构造函数GridLength(Double, GridUnitType),其中GridUnitType是一个枚举变量,有三个成员,相信大家看了其说明,也大概清楚每种变量的功能了。好了,下面看代码中如何改变窗口大小。
grid1.ColumnDefinitions[0].Width = new GridLength(4, GridUnitType.Star); grid1.ColumnDefinitions[2].Width = new GridLength(1.5, GridUnitType.Star); grid1.ColumnDefinitions[4].Width = new GridLength(1.5, GridUnitType.Star);View Code
需要注意的是这里我们是改变的第0,2,4列的宽度,因为第1,3列是GridSplitter。这样我们不仅可以在界面上用鼠标拖动GridSplitter动态改变每一栏的大小,还能在代码中实现我们想要的效果。