Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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
C# 网格行自动调整相对大小问题_C#_.net_Wpf_Wpf Controls - Fatal编程技术网

C# 网格行自动调整相对大小问题

C# 网格行自动调整相对大小问题,c#,.net,wpf,wpf-controls,C#,.net,Wpf,Wpf Controls,我是一个相对的WPF新手,我仍然在努力了解它的基本知识。我刚刚遇到了一个网格大小的问题,这让我很困惑(似乎不仅仅局限于网格) 问题是,如果在另一个网格的行/列中有一个具有相对大小的行/列的网格,并且该行/列维度设置为“自动”,则子网格的相对大小似乎没有效果 我对这个xaml的期望是,内部网格列仍然是相对大小的(一个是另一个的3倍宽度),即使它们位于父网格的自动大小列中。这是预期的行为,这是一个bug还是我遗漏了一些基本的东西 谢谢 试试这个: <Grid Background="D

我是一个相对的WPF新手,我仍然在努力了解它的基本知识。我刚刚遇到了一个网格大小的问题,这让我很困惑(似乎不仅仅局限于网格)

问题是,如果在另一个网格的行/列中有一个具有相对大小的行/列的网格,并且该行/列维度设置为“自动”,则子网格的相对大小似乎没有效果

我对这个xaml的期望是,内部网格列仍然是相对大小的(一个是另一个的3倍宽度),即使它们位于父网格的自动大小列中。这是预期的行为,这是一个bug还是我遗漏了一些基本的东西

谢谢

试试这个:

   <Grid Background="DarkBlue">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="2*" />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <Label BorderBrush="White"
               BorderThickness="1"
               Content="Cell 1"
               Foreground="White" />
        <Grid Grid.Column="1">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="10*" />
                <ColumnDefinition Width="3*" />
            </Grid.ColumnDefinitions>
            <Label BorderBrush="White"
                   BorderThickness="1"
                   Content="Cell 2"
                   Foreground="White" />

            <Label Grid.Column="1"
                   BorderBrush="White"
                   BorderThickness="1"
                   Content="Cell 3"
                   Foreground="White" />
        </Grid>
    </Grid>

第二个网格行为异常的原因是第一个网格的列设置为“自动”。 由于它是自动的,所以它试图将其中的所有内容挤压得尽可能小-如果没有标签,第二个网格的每列的宽度将为0。加上标签的宽度使它们大致相等

我相信这与WPF计算自动列/行中某些内容的宽度的顺序有关

它做的第一件事是注意第二个网格的自动值,即0。然后,在这之后,它将内容的宽度添加到这个计算值中——因为两个标签的大小大致相同,所以会产生两个相似的列

我的解决方案删除了auto值,而是说第一个网格的第一列“总宽度为2/3,另一列为1/3”-它不是自动的,因此第二列不会以任何方式被挤压。

尝试以下操作:

   <Grid Background="DarkBlue">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="2*" />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <Label BorderBrush="White"
               BorderThickness="1"
               Content="Cell 1"
               Foreground="White" />
        <Grid Grid.Column="1">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="10*" />
                <ColumnDefinition Width="3*" />
            </Grid.ColumnDefinitions>
            <Label BorderBrush="White"
                   BorderThickness="1"
                   Content="Cell 2"
                   Foreground="White" />

            <Label Grid.Column="1"
                   BorderBrush="White"
                   BorderThickness="1"
                   Content="Cell 3"
                   Foreground="White" />
        </Grid>
    </Grid>

第二个网格行为异常的原因是第一个网格的列设置为“自动”。 由于它是自动的,所以它试图将其中的所有内容挤压得尽可能小-如果没有标签,第二个网格的每列的宽度将为0。加上标签的宽度使它们大致相等

我相信这与WPF计算自动列/行中某些内容的宽度的顺序有关

它做的第一件事是注意第二个网格的自动值,即0。然后,在这之后,它将内容的宽度添加到这个计算值中——因为两个标签的大小大致相同,所以会产生两个相似的列


我的解决方案删除了auto值,取而代之的是第一个网格的第一列“总宽度,你得到2/3的空间,另一列得到1/3”-它不是自动的,所以第二列不会以任何方式被挤压。

看起来外网格列决定了内网格应该具有的宽度。尝试通过将列宽绑定到内部网格宽度来反转测量顺序:


调整大小后,只有第1列增加(请参见屏幕截图)


似乎外部网格列决定了内部网格应具有的宽度。尝试通过将列宽绑定到内部网格宽度来反转测量顺序:


调整大小后,只有第1列增加(请参见屏幕截图)


请将代码作为文本插入,而不是作为编辑的屏幕截图,这是默认行为<代码>自动表示只需要最小值。因为它是在外部
网格中设置的,所以它优先。为什么不让第一个网格有3列,然后去掉内部网格呢?谢谢你的回复!只是想知道为什么代码更喜欢书面形式而不是图像?我认为这是一个很好的候选人的形象,因为它显示的代码和设计师并排。这是有道理的,汽车应该得到最低限度的。。。但这难道不会破坏很多基本功能吗?基本CSS支持这种情况,请将代码作为文本插入,而不是作为编辑器的屏幕截图,这是默认行为<代码>自动
表示只需要最小值。因为它是在外部
网格中设置的,所以它优先。为什么不让第一个网格有3列,然后去掉内部网格呢?谢谢你的回复!只是想知道为什么代码更喜欢书面形式而不是图像?我认为这是一个很好的候选人的形象,因为它显示的代码和设计师并排。这是有道理的,汽车应该得到最低限度的。。。但这难道不会破坏很多基本功能吗?基本的CSS支持这种情况很好哦,哇,谢谢!这正是我想做的D仅仅是我还是WPF处理自动大小调整的方式有点奇怪?来自CSS,对于这样一个基本的函数来说,这似乎相当复杂。哦,哇,谢谢!这正是我想做的D仅仅是我还是WPF处理自动大小调整的方式有点奇怪?来自CSS,对于这样一个基本的函数来说,这看起来相当复杂。谢谢!这就是我们在我发布问题之前的结论:)我认为我对汽车的理解是完全不同的。我以为auto只是改变了容器的大小以适合孩子,而实际上它似乎忽略了任何孩子的大小,并将任何东西压扁,这看起来很奇怪……@Ross。堆垛板