正如您从 stackoverflow post中看到的那样,当ListBox的大小变小时,此代码不会修剪TextBlock的文本。
<ListBox ItemsSource="{Binding}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" TextTrimming="CharacterEllipsis"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
ListBox显示HorizontalScrollBar
- 换句话说,TextBlock的空间足够大,不需要进行文本修剪。这可以使用下一行代码来解决:
<ListBox ...
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
... />
所以现在文本将被修剪。但是,如果我不想修剪整个文本直到唯一的……会留下来?比方说,我已经设置了MinWidth
TextBlock属性,当ListBox的宽度变得小于那个MinWidth
时,我想要HorizontalScrollBar
变得可见。
我试图处理SizeChanged
事件,并根据条件设置ScrollViewer.HorizontalScrollBarVisibility
附加属性。但是,当我将后者从更改为时,文本并没有被修剪Disabled
——Visible
所以它以某种方式跳跃——从修剪到完整,这不是最佳的 UI 实践。
问:那么,如何实现上述行为?