强制TextBlock在WPF列表框中换行
我有一个显示消息的WPF列表框。它在左侧包含一个化身,用户名和消息垂直堆叠在化身的右侧。布局很好,直到消息文本应该换行,但是我在列表框上得到了一个水平滚动条 我在谷歌上搜索并找到了类似问题的解决方案,但没有一个有效强制TextBlock在WPF列表框中换行,wpf,listbox,word-wrap,textblock,Wpf,Listbox,Word Wrap,Textblock,我有一个显示消息的WPF列表框。它在左侧包含一个化身,用户名和消息垂直堆叠在化身的右侧。布局很好,直到消息文本应该换行,但是我在列表框上得到了一个水平滚动条 我在谷歌上搜索并找到了类似问题的解决方案,但没有一个有效 <ListBox HorizontalContentAlignment="Stretch" ItemsSource="{Binding Path=FriendsTimeline}"> <ListBox.ItemTemplate> &l
<ListBox HorizontalContentAlignment="Stretch" ItemsSource="{Binding Path=FriendsTimeline}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Border BorderBrush="DarkBlue" BorderThickness="3" CornerRadius="2" Margin="3" >
<Image Height="32" Width="32" Source="{Binding Path=User.ProfileImageUrl}"/>
</Border>
<StackPanel Orientation="Vertical">
<TextBlock Text="{Binding Path=User.UserName}"/>
<TextBlock Text="{Binding Path=Text}" TextWrapping="WrapWithOverflow"/> <!-- This is the textblock I'm having issues with. -->
</StackPanel>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
问题可能不在列表框中。如果父控件之一提供了足够的空间,因此不需要换行,则TextBlock不会换行。这可能是由ScrollViewer控件引起的。可以使用属性TextWrapping
对TextBlock
的内容进行包装。
使用DockPanel
/Grid
代替StackPanel
。
还有一件事-将ScrollViewer.HorizontalScrollBarVisibility
属性设置为列表框的禁用
值
根据马特的评论将隐藏
更新为禁用
。谢谢Matt。如果您希望防止TextBlock增长,并且希望它正好适合列表框的大小,则应明确设置其宽度
为了动态地更改它,这意味着不是一个固定值,但您需要将它绑定到可视化树中适当的父元素。你可以有这样的东西:
<ListBox ItemsSource="{Binding MyItems}" Name="MyListBox">
<ListBox.Resources>
<Style TargetType="ListBoxItem">
<Setter Property="Width"
Value="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ScrollContentPresenter}, Path=ActualWidth}" />
</Style>
</ListBox.Resources>
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Title}" TextWrapping="Wrap" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
如果不起作用,请尝试使用Visual Studio中的Live Visual树查找适当的元素(必须绑定到什么元素)。我认为您需要将ScrollViewer.HorizontalScrollBarVisibility设置为“禁用”而不是“隐藏”-否则列表框仍将尝试水平滚动,您将看不到滚动条。谢谢!在我的例子中,在listview中禁用水平滚动修复了ScrollViewer的问题。HorizontalScrollBarVisibility=“Disabled”