我正在使用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>
当文本不长时,这可以正常工作。如果文本太长,则第二列开始占用尽可能多的空间,然后从屏幕溢出。
我使用粉红色边框显示下图中每列的轮廓。
有没有以这种方式让文字换行工作?
答案 0 :(得分:1)
这是不可能的。您必须实现自己的面板,确保使用“测量和排列”覆盖方法在控件之间始终均匀分配可用空间。