wpf - How to have a Tab control fill the center of a DockPanel in WPF
问题描述
I have a WPF Window with a DockPanel that contains a Menu, a TabControl, and a Status Bar. I can get the Menu to dock to the top and the Status Bar to dock to the bottom, but I can't get the Tab control to fill the area between those two controls.
<Window x:Class="MediaCatalog.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:MediaCatalog"
mc:Ignorable="d"
Title="Window1" Height="450" Width="800">
<DockPanel LastChildFill="False">
<Menu Width="Auto" VerticalAlignment="Top" HorizontalAlignment="Left"
DockPanel.Dock="Top">
</Menu>
<TabControl DockPanel.Dock="Top" Margin="0,0,0,0"
BorderThickness="1,1,1,1" Height="291">
</TabControl>
<StatusBar DockPanel.Dock="Bottom" Height="22">
<StatusBar/>
</StatusBar>
</DockPanel>
解决方案
DockPanel
除非您设置LastChildFill
为,否则最后一个元素将填充false
:
<DockPanel>
<Menu DockPanel.Dock="Top">
<MenuItem Header="A" />
<MenuItem Header="B" />
</Menu>
<StatusBar DockPanel.Dock="Bottom" Height="22" />
<TabControl Margin="0,0,0,0" BorderThickness="1,1,1,1">
<TabItem Header="A" />
<TabItem Header="B" />
</TabControl>
</DockPanel>
请注意,您不应设置DockPanel.Dock
最后一个元素的附加属性。
此外,如果您希望它填充剩余空间,您不想为它Height
指定默认值。TabControl
上面的示例标记将TabControl
填充顶部Menu
和底部之间的剩余空间StatusBar
:
推荐阅读
- javascript - HostListener 的单元测试角度
- flutter - 如何对加载的 FirebaseAnimatedList 进行排序?
- powershell - 如何将 foreach 循环的结果通过管道传输到输出文件?
- swift - 如何将动态框架正确放入 Xcode12.5
- javascript - 单击此按钮时如何从按钮中删除轮廓边框?
- android - 片段返回导航,无需再次从网络获取数据
- ios - 如何在保存和读取 NSDocumentDirectory 时加密/解密(.pdf,.txt)等文件
- ios - 关于 Mach-O 偏移量和地址的困惑
- c# - 如何在 C# 中使用 aesKey 和私有证书加密文本?
- php - 父术语和子术语分类显示在多个选择复选框下拉菜单中 Wordpress