再下一城。
BUG描述:当RowDefinition的Height属性被设置为Auto时,MaxHeight将不会对这个Row的Height起到限制作用。
Bug发现过程:想做一个像Visual Studio 2008里Error List一样的东西。平时自动占用最小的空间,可以在适当的时候自己弹出来,但是又不要弹得过高。
示例窗口代码如下:
Demo Window
<Window x:Class="InvaliMaxHeight.DemoWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MaxHeight of RowDefinition NOT Effct" WindowStartupLocation="CenterScreen" Height="240" Width="300" ResizeMode="NoResize"> <Grid> <Grid.RowDefinitions> <RowDefinition/> <RowDefinition Height="5"/> <RowDefinition Height="Auto" MaxHeight="50"/> </Grid.RowDefinitions> <DockPanel Margin="12"> <TextBlock DockPanel.Dock="Top" TextWrapping="Wrap" Text="XXX"/> <Button Content="Show Large Tab" Click="OnShowLargeTabClick" HorizontalAlignment="Center" VerticalAlignment="Center" Width="125"/> </DockPanel> <GridSplitter Grid.Row="1" HorizontalAlignment="Stretch"/> <TabControl Grid.Row="2" Margin="12"> <TabItem Header="Empty Tab"/> <TabItem Header="Large Tab" Name="largeTab"> <ListBox Name="listBox"/> </TabItem> </TabControl> </Grid></Window>
注:RowDefinition的Height的默认值为*。
为了避免多余代码产生不必要的误会,上面的代码中尽量减少了大小的设置。设置的Margin是为了美观。运行效果如下图。
图1. Startup
可能大家不知道50px有多大,大概就是现在灰线下的部分的高度。就是说点击Button之后,高度不应该有太大的变化。可是结果却是这样。
图2. Clicked
这时,如果拖一下上面的GridSplitter,那么Large Tab那个部分又会突然变小。
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索代码
, 高度
, GridSplitter
, 部分
height
rowdefinition height、wpf rowdefinition、rowdefinition、rowheight、wpf height auto,以便于您获取更多的相关知识。