【原】WPF 主界面布局中DockPanel的停靠与默认填充
在WPF中,通常的主界面大都是DockPanel 根元素,一次DockPanel .Top主菜單、DockPanel .Top Toolbar、DockPanel .Bottom Statusbar,中建Fill一個主區域,但在使用時往往有個誤區,就是充滿剩余空間的元素如何填充,因為DockPanel沒有DockPanel.Fill屬性。實際做法是先停靠Menu、Toolbar、Statusbar等等可以通過DockPanel .Top、DockPanel .Bottom、DockPanel .Left、DockPanel .Right停靠的子元素,然后,也就是最后,加入填充區元素,同時注意,不能設置此元素的DockPanel屬性,這樣,最后加入的元素就自動填充整個剩余空間了。
文檔中對這一"技巧"沒有任何說明,導致無謂的時間浪費,記錄于此,希望對大家有所幫助。
?
<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="啟動/停止巡測"></MenuItem>
??????????????? <MenuItem Header="通信測試"></MenuItem>
??????????????? <Separator/>
??????????????? <MenuItem Header="參數設置"></MenuItem>
??????????? </MenuItem>
??????????? <MenuItem Header="歷史查詢">
??????????????? <MenuItem Header="啟動/停止巡測"></MenuItem>
??????????????? <MenuItem Header="通信測試"></MenuItem>
??????????????? <Separator/>
??????????????? <MenuItem Header="參數設置"></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,沒有設置任何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”屬性設置為 Top 或 Bottom,請將控件的“Width”屬性設置為 Auto。同樣,如果“Dockstyle.Dock”屬性設置為 Left 或 Right,請將控件的“Height”屬性設置為 Auto。
默認情況下 DockPanel 設置為 LastChildFill,這表示添加到 DockPanel 的最后一個子控件將使其 DockPanel.Dock 屬性設置為 Fill。若要更改此行為,請設置 DockPanel 的 LastChildFill 屬性。
?
?
?
轉載于:https://www.cnblogs.com/khler/archive/2010/03/23/1692538.html
總結
以上是生活随笔為你收集整理的【原】WPF 主界面布局中DockPanel的停靠与默认填充的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 简单的文本片段替换器
- 下一篇: asp.net mvc 正常支持Fcke