当窗口垂直调整为更小的尺寸时,避免 WPF 状态栏完全折叠
Posted
技术标签:
【中文标题】当窗口垂直调整为更小的尺寸时,避免 WPF 状态栏完全折叠【英文标题】:Avoid WPF statusbar gets totally collapsed when window gets resized vertically to a smaller size 【发布时间】:2019-06-05 20:09:02 【问题描述】:我有下面的 WPF 窗口,其中包含一个停靠面板作为主容器。然后我在顶部放置一个主网格(其中包含一些其他网格),在底部放置一个状态栏。
<Window>
<DockPanel>
<Grid DockPanel.Dock="Top">
<!-- Grid stuff here -->
</Grid>
<StatusBar DockPanel.Dock="Bottom"
VerticalAlignment="Bottom">
<StatusBar.ItemsPanel>
<ItemsPanelTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="100" />
</Grid.ColumnDefinitions>
</Grid>
</ItemsPanelTemplate>
</StatusBar.ItemsPanel>
<StatusBarItem Grid.Column="0">
<TextBlock Text="Item1"/>
</StatusBarItem>
<Separator Grid.Column="1" />
<StatusBarItem Grid.Column="2">
<TextBlock />
</StatusBarItem>
<Separator Grid.Column="3" />
<StatusBarItem Grid.Column="4">
<TextBlock Text="AnotherItem" />
</StatusBarItem>
</DockPanel>
</Window>
我有以下问题: 当窗口垂直调整为更小的尺寸时,状态栏高度会降低甚至完全折叠。那么如何避免这种情况呢?我希望状态栏永远不会折叠并始终保持其高度。
【问题讨论】:
使用一个Grid作为视图的根,将状态栏放在第1行,高度为auto,另一个网格放在第0行,高度为* @Will 谢谢,它有效! 好吧,见鬼,我以为你会有问题。好的,我会记下一个实际的答案。 【参考方案1】:Grids 中的网格现在很火。
<Window x:Class="GridRoot.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<Border BorderBrush="Black" BorderThickness="10" Background="CornflowerBlue">
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center">
Hello!
</TextBlock>
</Border>
</Grid>
<StatusBar Grid.Row="1">
<StatusBarItem>
<TextBlock>
GET OFF ME!
</TextBlock>
</StatusBarItem>
</StatusBar>
</Grid>
</Window>
顶行占用尽可能多的可用空间,底行占用其内容所需的空间。由于 StatusBar 控件几乎都有一个固定的高度,因此它始终保持在底部可见。
有些人可能会在将网格放入另一个网格时遇到问题,但绝对没有理由不这样做。
上面的例子,tiny
和embiggened
【讨论】:
以上是关于当窗口垂直调整为更小的尺寸时,避免 WPF 状态栏完全折叠的主要内容,如果未能解决你的问题,请参考以下文章