1

我正在使用 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 边框来显示下图中每列的轮廓。 文本换行的网格问题

反正有没有让文本换行以这种方式工作?

4

1 回答 1

1

这是不可能的。您必须实现自己的面板,以确保可用空间始终在使用 Measure 和 Arrange 覆盖方法的控件之间均匀分布。

于 2012-04-20T10:57:15.683 回答