私は ListBox を使用しています。項目テンプレートは 2 つの列を持つグリッドです。各列は、使用可能なスペースの半分を占める必要があります。
これらの列のいずれかのテキストが大きくなりすぎた場合は、折り返す必要があります。
私は次のコードを使用しています:
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Border Grid.Column="0" BorderBrush="HotPink" BorderThickness="2">
<TextBlock Text="{Binding Title}"
FontFamily="Arial"
FontSize="16"/>
</Border>
<Border Grid.Column="1" BorderBrush="HotPink" BorderThickness="2">
<TextBlock Text="{Binding Description}"
FontFamily="Arial"
FontSize="16"
TextWrapping="Wrap"/>
</Border>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
これは、テキストが長くない場合にうまく機能します。テキストが長すぎると、2 番目の列ができるだけ多くのスペースを占有し始め、画面からはみ出します。
次の図では、ホット ピンクの境界線を使用して各列のアウトラインを示しています。
このようにテキストの折り返しを機能させる方法はありますか?