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.IsSharedScopeSizeするfalseと機能しますが、行が不均一になります。

これを達成するための賢い方法はありますか、または「AB C」テキスト列の幅を手動で設定する必要がありますか?

(注: これは実際には、表示されていない ItemsControl 内にあります)

4

1 に答える 1

1

SharedSizeGroupすべての列に設定する必要がないことに気付きました。* 列に設定しないことで、他の列の一貫した列幅を維持しながら、必要なラッピングを実現できます。

残念ながら、これは * グリッドの最後の列ではない列では機能しないと思いますが、まだ試していません。

于 2011-07-01T20:47:01.797 に答える