文本块在星形宽度的网格中包装不正确

时间:2012-04-20 10:29:11

标签: silverlight textblock textwrapping

我正在使用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>

当文本不长时,这可以正常工作。如果文本太长,则第二列开始占用尽可能多的空间,然后从屏幕溢出。

我使用粉红色边框显示下图中每列的轮廓。 Grid Issue with Text Wrapping

有没有以这种方式让文字换行工作?

1 个答案:

答案 0 :(得分:1)

这是不可能的。您必须实现自己的面板,确保使用“测量和排列”覆盖方法在控件之间始终均匀分配可用空间。