我正在使用 ListBox,项目模板是一个有两列的网格。每列需要占用一半的可用空间。
如果这些列之一中的文本变得太大,那么我需要它来换行。
我正在使用以下代码:
<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>
当文本不长时,这很好用。如果文本太长,则第二列开始占用尽可能多的空间,然后溢出屏幕。
我使用 Hot Pink 边框来显示下图中每列的轮廓。
反正有没有让文本换行以这种方式工作?