Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF RowDefinition古怪_Wpf_Xaml_Snoop - Fatal编程技术网

WPF RowDefinition古怪

WPF RowDefinition古怪,wpf,xaml,snoop,Wpf,Xaml,Snoop,我有一个正在调试的应用程序,我正在通过snoop查看运行时的各种设置 我遇到的问题是: 有一个网格,高度为50.4。它有3个行定义,每个行定义的高度为1星(*)。因此,可以假设每个RowDefinition的实际高度为50.4/3(16.8)。但是,我可以看到前两行定义的实际高度为25.2,第三行定义的实际高度为0。这三颗行星的高度都仍然是一颗星 这怎么可能?我只知道你是如何做到这一点的。您无法按语法将实际高度更改为只读。必须在网格的排列通道中设置高度 有人知道会产生这种情况的任何情况吗。我找到

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

我遇到的问题是:

有一个网格,高度为50.4。它有3个行定义,每个行定义的高度为1星(*)。因此,可以假设每个RowDefinition的实际高度为50.4/3(16.8)。但是,我可以看到前两行定义的实际高度为25.2,第三行定义的实际高度为0。这三颗行星的高度都仍然是一颗星

这怎么可能?我只知道你是如何做到这一点的。您无法按语法将实际高度更改为只读。必须在网格的排列通道中设置高度


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

我找到了答案-我不知道这是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开发过程中,我从未听说过这一点,我已经找到了答案——我不知道这是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开发中从未听说过这一点

您能提供一个小而完整的示例项目来重现这种行为吗?恐怕不行,这个非常复杂的应用程序有问题。某种东西造成了这种情况,我认为这是不可能的。我想知道这是如何发生的,这将有助于我找到原因。我相信,在尝试创建这样一个最小的样本时,您将获得很多见解。您将从复杂的应用程序开始,删除越来越多的代码。在某个时候,您删除了一些代码,问题就不再发生了。你现在知道什么是令人不快的代码了……也许有人从代码后面改变了行的高度?我可能有点笨拙地表达了我想要答案的愿望。我可以花上几天的时间去构建这个应用程序,我相信我会在某个时候得到一个妙不可言的时刻。我在这里发布这个问题的原因是想看看是否有人“知道”一个可能导致这种情况的场景。如果没有人回答,那么我还有很多工作要做:)你能提供一个小但完整的示例项目来重现这种行为吗?恐怕不行,这个非常复杂的应用程序有问题。某种东西造成了这种情况,我认为这是不可能的。我想知道这是如何发生的,这将有助于我找到原因。我相信,在尝试创建这样一个最小的样本时,您将获得很多见解。您将从复杂的应用程序开始,删除越来越多的代码。在某个时候,您删除了一些代码,问题就不再发生了。你现在知道什么是令人不快的代码了……也许有人从代码后面改变了行的高度?我可能有点笨拙地表达了我想要答案的愿望。我可以花上几天的时间去构建这个应用程序,我相信我会在某个时候得到一个妙不可言的时刻。我在这里发布这个问题的原因是想看看是否有人“知道”一个可能导致这种情况的场景。如果没有人回答,那么我还有很多工作要做:)你的
边框是否有一个定义的高度,或者当行折叠时它是否也折叠(或收缩)它的高度?没有任何东西有一个定义的高度,因此边框将自动调整到其内容的大小。你不需要边框来让代码像这样运行,我把边框放在那里,这样红色的背景会显示网格有一个折叠的行右,我得到的是是否有一个定义的高度。如果没有定义的高度,那么这就是我所期望的行为。将网格放入DockPanel中,或者给它一个固定的高度,您将获得预期的行为。这与网格试图测量其高度有关,由于行没有任何可测量的内容,因此行的高度最终为0,并降低了整个网格高度。好的,我想你已经一针见血了。基本上,如果网格没有固定的大小,那么没有指定内容(或折叠内容)且为星形大小的任何行都将基本上消失,就像它最初不在XAML中一样。我想同样的行为在专栏中也会很明显。谢谢你-并不是每天你都能学到如此基本的新东西:)你的
边框是否有一个定义的高度,或者当行折叠时它是否也折叠(或收缩)它的高度?没有任何东西有一个定义的高度,所以边框将自动调整到其内容的大小。你不需要边框来让代码像这样运行,我把边框放在那里,这样红色的背景会显示网格有一个折叠的行右,我得到的是是否有一个定义的高度。如果没有定义的高度,则这是