WPF行定义怪异

  • 本文关键字:定义 WPF wpf xaml snoop
  • 更新时间 :
  • 英文 :


我有一个应用程序正在尝试调试,我正在通过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开发中,我从未听说过这一点。

最新更新