我有一个应用程序正在尝试调试,我正在通过snoop查看运行时的各种设置。
我遇到的问题是:
有一个网格,高度为50.4。它有3个RowDefinitions,每个RowDefinitions的高度为1星(*)。因此,可以假设每个RowDefinition的实际高度为50.4/3(16.8)。然而,我可以看到前两个RowDefinition具有25.2的ActualHeight,第三个具有0的ActualHighth。三者的高度仍然为1颗星。
这怎么可能?我只是明白你是如何做到这一点的。不能将ActualHeight语法更改为只读。高度必须已在网格的排列过程中设置。
有人知道会产生这种情况的任何一种情况吗。
我找到了答案-我不知道是WPF错误,还是我没有正确阅读文档
<Border Background="Red" HorizontalAlignment="Center" VerticalAlignment="Center">
<Grid HorizontalAlignment="Center" VerticalAlignment="Center" Margin="5">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBox Text="123" Grid.Row="0" Grid.Column="0" HorizontalAlignment="Center" VerticalAlignment="Center" />
<TextBox Text="123" Grid.Row="0" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center" />
<TextBox Text="123" Grid.Row="1" Grid.Column="0" HorizontalAlignment="Center" VerticalAlignment="Center" />
<TextBox Text="123" Grid.Row="1" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center" />
<TextBox Text="123" Grid.Row="2" Grid.Column="0" HorizontalAlignment="Center" VerticalAlignment="Center" Visibility="Collapsed" />
<TextBox Text="123" Grid.Row="2" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center" Visibility="Collapsed" />
</Grid>
</Border>
如果您查看代码,您将看到有3个星形(*)大小的行,无论其内容如何,这些行都应具有相等的网格高度份额。
但是,当折叠指定给该行的所有内容时,该行本身也会折叠。(如果你窥探它,它的高度为*,但实际高度为0)
有人认为这种行为正常吗?在过去5年的WPF开发中,我从未听说过这一点。