Я использую IsSharedSizeScope
в ItemsControl в WPF, чтобы сохранить одинаковую ширину для каждой строки.
К сожалению, это не совместимо со столбцами Width='*'
, из-за чего текстовый столбец 'A B 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
, тогда оно будет работать, но строки будут неравномерными.
Есть ли какой-нибудь умный способ добиться этого, или мне придется вручную устанавливать ширину в текстовом столбце 'A B C'?
(Примечание. Это на самом деле внутри элемента ItemsControl, который не показан)