2

IsSharedSizeScope在 WPF 中的 ItemsControl 中使用以保持每行的宽度相同。

不幸的是,这与列不兼容Width='*',这使得“AB C”文本列从页面末尾溢出。

<Border BorderBrush="Red" BorderThickness="1">
    <StackPanel Grid.IsSharedSizeScope="True">

        <Grid HorizontalAlignment="Stretch">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto" SharedSizeGroup="G1"/>
                <ColumnDefinition Width="Auto" SharedSizeGroup="G2" />
                <ColumnDefinition Width="*"  SharedSizeGroup="G3" />
            </Grid.ColumnDefinitions>

            <TextBlock Text="Col0" Grid.Column="0" Margin="0,0,5,0"/>
            <TextBlock Text="Col1" Grid.Column="1" Margin="0,0,5,0"/>

            <TextBlock Text="A B C D E F G H I J K L M N O P Q R S T U V W X Y Z" TextWrapping="Wrap" Grid.Column="2"/> 
        </Grid>

    </StackPanel>                   

</Border>

这不会换行,但是如果您更改Grid.IsSharedScopeSizefalsethen 它确实可以工作,但是行不均匀。

有什么聪明的方法可以实现这一点,还是我必须在“AB C”文本列上手动设置宽度?

(注意:这实际上是在未显示的 ItemsControl 内部)

4

1 回答 1

1

我刚刚意识到我不需要SharedSizeGroup为每一列设置。通过不为 * 列设置它,我可以实现我需要的换行,同时保持其他列的列宽一致。

不幸的是,我认为这不适用于不是网格中最后一列的 * 列,但我还没有尝试过。

于 2011-07-01T20:47:01.797 回答