当我在列上同时使用 SharedSizeGroup 和列跨越控件创建网格时,网格会“精神上”晃动并使 cpu 内核达到最大。
我敢肯定一定有一个很好的理由说明为什么这行不通,但我想不出!我还能如何实现这种尺寸布局?
<Grid IsSharedSizeScope="True">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="Columns"/>
<ColumnDefinition Width="Auto" SharedSizeGroup="Columns"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Label Grid.Column="0">Blah</Label>
<Label Grid.Column="1">Blah Blah Blah Blah</Label>
<Label Grid.Row="1" Grid.ColumnSpan="2">ajsgdeererajgsfdg dfg df gdfg djgsad</Label>
</Grid>
最佳答案
您所做的基本上是在您的布局中设置无限递归。
- 要共享大小,列首先需要计算自己的大小。
- 然后他们可以根据 较大的(可能是此处的第 1 列)。
- 在第 0 列扩展以匹配之后 第一列的大小,第三个标签可以 现在在列中使用更多空间
- 当它移动列时,它的空间 列 1 中的需求变小, 允许第 1 列缩小到 匹配其所需的新空间 内容。
- 第 1 列现在重新计算其大小(从第一步重新开始)
SharedSizeGroup 旨在跨不同的网格使用,以保持以某种方式分离到不同容器中的元素对齐,例如不同的模板化列表项或标题行。如果您需要一个未拉伸(stretch)的等分行,您可以使用其他东西,例如 * 大小的列或 UniformGrid。
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<UniformGrid Rows="1" HorizontalAlignment="Left">
<Label >Blah</Label>
<Label >Blah Blah Blah Blah</Label>
</UniformGrid>
<Label Grid.Row="1">ajsgdeererajgsfdg dfg df gdfg djgsad</Label>
</Grid>
关于wpf - 在 Wpf 网格中使用 SharedSizeGroup 和 ColumnSpan,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4880184/