Silverlight 文本块在星形宽度的网格中不正确地换行
我使用的是一个列表框,项目模板是一个有两列的网格。每列需要占用一半的可用空间 如果其中一列中的文本太大,则需要将其换行 我正在使用以下代码:Silverlight 文本块在星形宽度的网格中不正确地换行,silverlight,textblock,word-wrap,Silverlight,Textblock,Word Wrap,我使用的是一个列表框,项目模板是一个有两列的网格。每列需要占用一半的可用空间 如果其中一列中的文本太大,则需要将其换行 我正在使用以下代码: <ListBox.ItemContainerStyle> <Style TargetType="ListBoxItem"> <Setter Property="HorizontalContentAlignment" Value="Stretch" /> </Style> &l
<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>
当文本不长时,这很好用。如果文本太长,则第二列开始占用尽可能多的空间,然后溢出屏幕
在下图中,我使用了粉红色边框来显示每列的轮廓。
有没有办法让文本包装以这种方式工作?这是不可能的。您必须实现自己的面板,以确保可用空间始终均匀分布在使用“测量”和“排列”覆盖方法的控件之间。这是不可能的。您必须实现自己的面板,以确保可用空间始终均匀分布在使用“测量”和“排列”覆盖方法的控件之间。通过这种方式尝试使用“停靠面板”,您的包装文本块高度可以超过一行。您也可以将LastChildFill设置为true。您的不会换行,因为写入时宽度不固定,因此会因*而拉伸。您也可以使用MaxWidth。然后必须对其进行包装。除此之外,您可以使用AcceptReturn true来接受输入字符。希望这对我有帮助,请小心使用此行为。尝试使用Dock Panel,这样您的包装文本块高度可以超过一行。此外,您还可以将LastChildFill设置为true。您的不会换行,因为写入时宽度不固定,因此会因*而拉伸。您也可以使用MaxWidth。然后必须对其进行包装。除此之外,您可以使用AcceptReturn true来接受输入字符。希望这对我有用,小心使用这种行为。