创建用户界面时,按照位置和大小排列控件以形成布局。 任何布局的一项关键要求都是适应窗口大小和显示设置的变化。 WPF 为你提供一流的可扩展布局系统,而不强制你编写代码以适应这些情况下的布局。
布局系统的基础是相对定位,这提高了适应不断变化的窗口和显示条件的能力。 此外,该布局系统还可管理控件之间的协商以确定布局。 协商是一个两步过程:首先,控件将需要的位置和大小告知父级;其次,父级将控件可以有的空间告知控件。
该布局系统通过基 WPF 类公开给子控件。 对于通用的布局(如网格、堆叠和停靠),WPF 包括若干布局控件:
* [Canvas](https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.controls.canvas):子控件提供其自己的布局。
* [DockPanel](https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.controls.dockpanel):子控件与面板的边缘对齐。
* [Grid](https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.controls.grid):子控件按行和列放置。
* [StackPanel](https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.controls.stackpanel):子控件垂直或水平堆叠。
* [VirtualizingStackPanel](https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.controls.virtualizingstackpanel):子控件在水平或垂直的行上进行虚拟化和排列。
* [WrapPanel](https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.controls.wrappanel):子控件按从左到右的顺序放置,在当前行上的控件超出允许的空间时,换行到下一行。
XAML
复制
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="SDKSample.LayoutWindow"
Title="Layout with the DockPanel" Height="143" Width="319">
<!--DockPanel to layout four text boxes-->
<DockPanel>
<TextBox DockPanel.Dock="Top">Dock = "Top"</TextBox>
<TextBox DockPanel.Dock="Bottom">Dock = "Bottom"</TextBox>
<TextBox DockPanel.Dock="Left">Dock = "Left"</TextBox>
<TextBox Background="White">This TextBox "fills" the remaining space.</TextBox>
</DockPanel>
</Window>
DockPanel
是用来把子元素靠上下左右的一个布局
<Grid>
<DockPanel>
<Menu DockPanel.Dock="Top">
<MenuItem Header="文件">
<MenuItem Header="打开"></MenuItem>
</MenuItem>
<MenuItem Header="编辑">
<MenuItem Header="复制"></MenuItem>
</MenuItem>
</Menu>
<TextBox DockPanel.Dock="Bottom"></TextBox>
<Button Content="left" DockPanel.Dock="Left"></Button>
<Button Content="right" DockPanel.Dock="Right"></Button>
</DockPanel>
</Grid>
最终运行的结果
网友评论