在WPF中,,通常的主界面大都是DockPanel 根元素,一次DockPanel .Top主菜單,、DockPanel .Top Toolbar,、DockPanel .Bottom Statusbar,中建Fill一個(gè)主區(qū)域,,但在使用時(shí)往往有個(gè)誤區(qū),,就是充滿剩余空間的元素如何填充,因?yàn)镈ockPanel沒有DockPanel.Fill屬性,。實(shí)際做法是先??縈enu、Toolbar,、Statusbar等等可以通過DockPanel .Top,、DockPanel .Bottom,、DockPanel .Left、DockPanel
.Right??康淖釉?,然后,也就是最后,,加入填充區(qū)元素,,同時(shí)注意,不能設(shè)置此元素的DockPanel屬性,,這樣,,最后加入的元素就自動(dòng)填充整個(gè)剩余空間了。
文檔中對這一"技巧"沒有任何說明,,導(dǎo)致無謂的時(shí)間浪費(fèi),,記錄于此,希望對大家有所幫助,。
<DockPanel Name="dockPanel1">
<Menu Height="23" Name="menu1" DockPanel.Dock="Top">
<MenuItem Header="用戶管理">
<MenuItem Header="修改密碼"></MenuItem>
<MenuItem Header="管理用戶"></MenuItem>
</MenuItem>
<MenuItem Header="鐵塔管理">
<MenuItem Header="增加"></MenuItem>
<MenuItem Header="修改"></MenuItem>
<MenuItem Header="刪除"></MenuItem>
</MenuItem>
<MenuItem Header="通信管理">
<MenuItem Header="啟動(dòng)/停止巡測"></MenuItem>
<MenuItem Header="通信測試"></MenuItem>
<Separator/>
<MenuItem Header="參數(shù)設(shè)置"></MenuItem>
</MenuItem>
<MenuItem Header="歷史查詢">
<MenuItem Header="啟動(dòng)/停止巡測"></MenuItem>
<MenuItem Header="通信測試"></MenuItem>
<Separator/>
<MenuItem Header="參數(shù)設(shè)置"></MenuItem>
</MenuItem>
<MenuItem Header="幫助"/>
</Menu>
<ToolBarPanel Height="26" Name="toolBarPanel1" DockPanel.Dock="Top" Orientation="Horizontal">
<ToolBar>
<Button>111</Button>
<Button>222</Button>
</ToolBar>
<ToolBar Margin="350,0,0,0">
<Button>111</Button>
<Button>222</Button>
</ToolBar>
</ToolBarPanel>
<StatusBar Height="23" Name="statusBar1" DockPanel.Dock="Bottom" VerticalAlignment="Bottom" />
<!--注意Grid,,沒有設(shè)置任何DockPanel.Dock屬性:-->
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition/>
<RowDefinition Height="240"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="240"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<GridSplitter Grid.RowSpan="2" Grid.Column="1" HorizontalAlignment="Left" Width="5" Name="gridSplitter1" ResizeDirection="Columns"/>
<WrapPanel>
<RadioButton Margin="5">全部</RadioButton>
<RadioButton Margin="5">三管塔</RadioButton>
<RadioButton Margin="5">角鋼塔</RadioButton>
<RadioButton Margin="5">單管塔</RadioButton>
</WrapPanel>
<TreeView Name="treeView1" Grid.Row="1">
<TreeViewItem Header="連云港市">
<TreeViewItem Header="塔1"></TreeViewItem>
<TreeViewItem Header="塔2"></TreeViewItem>
<TreeViewItem Header="塔3"></TreeViewItem>
<TreeViewItem Header="塔4"></TreeViewItem>
</TreeViewItem>
<TreeViewItem Header="XXX市"></TreeViewItem>
</TreeView>
<WindowsFormsHost Grid.Row="0" Grid.RowSpan="2" Grid.Column="1" Name="windowsFormsHost1" OpacityMask="{x:Null}" Background="#FF190000" />
<Image Grid.Row="2"></Image>
</Grid>
</DockPanel>
如果“Dockstyle.Dock”屬性設(shè)置為 Top 或 Bottom,請將控件的“Width”屬性設(shè)置為 Auto,。同樣,,如果“Dockstyle.Dock”屬性設(shè)置為
Left 或 Right,請將控件的“Height”屬性設(shè)置為 Auto,。
默認(rèn)情況下 DockPanel 設(shè)置為 LastChildFill,,這表示添加到 DockPanel 的最后一個(gè)子控件將使其 DockPanel.Dock 屬性設(shè)置為 Fill。若要更改此行為,,請?jiān)O(shè)置
DockPanel 的 LastChildFill 屬性,。