Ответ 1
Причина заключается в определении вашего ColumnDefinition
как автоматического или * вам нечего ограничивать размер, доступный для вашего TextBlock
, чтобы потреблять. Поэтому было бы ожидать, что текст для текста не будет обернут. Поэтому вам нужно будет определить Width
или MaxWidth
непосредственно в ColumnDefinition
или TextBlock
. Например,
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" MaxWidth="50"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="WrapTextBlock" Text="123 456 789 0123 4456 123 123 123 123 1 23 123 " TextWrapping="Wrap" />
<TextBlock x:Name="NotWrapTextBlock" Grid.Column="1" Text="GGG" />
</Grid>
Дает вам ваш обертку, если вы хотите сказать, вместо этого разрешите, например, сказать, что 7% пространства, которое должна использовать сетка, измените Width
на что-то вроде:
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.07*"/>
<ColumnDefinition Width="0.93*"/>
</Grid.ColumnDefinitions>
Таким образом, первый столбец займет 7% доступного пространства, а правый столбец будет потреблять остальные. Надеюсь, это поможет.
Изменить дополнение:
То, что вы показываете в значительной степени, совпадает с вашим первым фрагментом, в который должен входить первый столбец, второй должен содержать только достаточное пространство для отображения его содержимого;
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="WrapTextBlock" Grid.Column="0" Text="123 456 789 0123 4456 123 123 123 123 1 23 123 " TextWrapping="Wrap" />
<TextBlock x:Name="NotWrapTextBlock" Grid.Column="1" Text="GGG" />
</Grid>