WPF RowDefinition很奇怪

时间:2012-08-21 13:15:05

标签: wpf xaml snoop

我有一个我正在尝试调试的应用程序,我正在通过snoop在运行时查看各种设置。

我遇到的问题是:

有一个网格,高度为50.4。它有3个RowDefinitions,每个高度为1星(*)。因此可以假设每个RowDefinition的实际高度为50.4 / 3(16.8)。但是,我可以看到前两个RowDefinitions的ActualHeight为25.2,第三个的ActualHeight为0.所有三个的高度均为1星。

这怎么可能?我只能看到你如何能够实现这种状况。您不能将ActualHeight语法更改为只读。必须在网格的编配通道中设置高度。

有没有人知道会产生这种情况的任何情况。

1 个答案:

答案 0 :(得分:1)

我找到了答案 - 我不知道它是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开发中都没有听说过这个