Ответ 1
Ваша проблема заключается в использовании StackPanel
, который позволяет своим дочерним пользователям заполнять все доступное пространство - размер StackPanel
соответствует размеру его содержимого. Попробуйте удалить StackPanel
и сохраните только Grid
- таким образом вы ограничите размер своих детей доступным пространством, используемым сеткой.
Если этого макета недостаточно, попробуйте установить MaxWidth на TextBox
, который требует обертывания.
Теперь источником вашей проблемы был также тот факт, что ваш TextBox
был вставлен в первый столбец Grid
с бесконечным размером (Width = "Auto" ). Таким образом, настройка Grid.Column = "7" на TextBox
сделала трюк, который вы хотели (обертывание текста). Здесь пересмотренный код:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="5" />
<ColumnDefinition Width="15" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<DockPanel Grid.Row="0" Grid.Column="0">
<TextBlock FontWeight="Bold" Padding="0,0,5,0" Text="{Binding Path=Id, StringFormat='#\{0\}'}" />
<TextBlock FontWeight="Bold" Padding="0,0,5,0" Text="{Binding Path=Name}" />
</DockPanel>
<TextBlock Grid.Row="0" Grid.Column="4" FontWeight="Bold" Text="{Binding Path=Time, StringFormat={}{0:HH:mm}}" />
<Image
Grid.Row="0"
Grid.Column="6"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Source="{Binding Path=Image, Mode=OneWay, Converter={StaticResource ImageConverter}}" />
<TextBlock Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="7" Text="{Binding Notes}" TextWrapping="Wrap" />
<Image
Grid.Row="1"
Grid.Column="4"
HorizontalAlignment="Center"
VerticalAlignment="Top"
Source="{Binding Path=Picture, Mode=OneWay, Converter={StaticResource PictureConverter}}" />
</Grid>