我在对话框中有一组要自动调整大小的控件。一切都很好,直到我尝试使用均匀间隔的网格宽度重新排列。
下面是XAML:
<Grid Margin="20" >
    <Grid.RowDefinitions>
        <RowDefinition Height="AUTO" />
        <RowDefinition Height="AUTO" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="2*"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <Grid>
         ...left controls
    </Grid>
    <Border BorderThickness="1" BorderBrush="Gray" Grid.Column="1" Margin="0,10,0,5">
         ...right controls
    </Border>
    <Grid Grid.Row="2" Grid.ColumnSpan="2>
         ...okay and cancel
    </Grid>
</Grid>结果如下:

不是我想要的。右列的宽度很小,由于某种原因,它没有监听"*“,使其等于另一列的一半。
如果我将一个Width="450"放在最高的网格或UserControl上(或者在运行时,调整它所在的窗口的大小!)一切都“跳跃”,我得到了我所期望的,两列均匀分布:

但现在它不响应重新调整大小或自动调整较大内容的大小(除了当父容器拉伸时不会拉伸),如果我是在相等间距后,我可以使用共享大小组。我是否做错了什么,或者这是Width="*"的预期行为
发布于 2016-05-26 17:54:50
当您的外部网格托管在未定义宽度的容器中时,实际宽度将是后代的结果。也就是说,(外部)网格度量传递将“询问”到右边的列(边框):“我给你想要的任何空间:你需要多少空间?”只要边框片段不需要任何特定的大小,结果就是默认值(在大多数情况下是零)。因此出现了折叠行为。
基本上,您应该定义外部网格宽度或第二列宽度(意思是列中的任何内容都应该告诉它需要多少空间)。
https://stackoverflow.com/questions/37456870
复制相似问题