在Wpf网格中使用SharedSizeGroup和ColumnSpan

时间:2011-02-02 21:41:06

标签: wpf

当我使用列上的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 :(得分:4)

你所做的基本上是在你的布局中设置无限递归。

  • 要共享列的大小,首先需要计算自己的大小。
  • 然后他们可以根据 较大的一个(这里可能是第1列)。
  • 第0列扩展后匹配 第1列的大小,第三个标签可以 现在使用Column
  • 中的更多空间
  • 当它移动列时,它就是空间 第1列中的需求变小, 允许第1列缩小到 匹配其所需的新空间 内容。
  • 第1列现在重新计算其大小(从第一步开始)

SharedSizeGroup旨在跨不同的网格使用,以维护以某种方式分隔成不同容器的元素的对齐方式,例如不同的模板化列表项或标题行。如果您需要一个未拉伸的同等分割行,您可以使用其他类似* size columns或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>