我确信这很简单,但我似乎无法弄明白。基本上,我试图强制 ListBoxItem
允许自己超出 ListBox
宽度。例如,假设我们有一个原始的 ListBox
,每个 ListBoxItem
都有一个 TextBox
:
<ListBox HorizontalContentAlignment="Stretch">
<ListBoxItem>
<TextBox TextWrapping="Wrap"/>
</ListBoxItem>
<ListBoxItem>
<TextBox TextWrapping="Wrap"/>
</ListBoxItem>
<ListBoxItem>
<TextBox TextWrapping="Wrap"/>
</ListBoxItem>
</ListBox>
如果您要输入它们,即使文本将 TextWrapping
设置为 Wrap
,文本仍将继续向右流动,因为 的宽度>ListBoxItem
和 ListBox
调整内容的宽度(注意 HorizontalScrollBar
出现):
我确定这是预期的行为,可能是由模板中的 ScrollViewer
引起的,但我希望文本换行并包含在原始宽度内。我可以通过设置静态宽度来解决这个问题,但这将是一个粗略的设计决定,而不是我想做的事情(它会限制事物轻易调整大小)。
基本上,我正在寻找的行为是 ItemsControl
的行为:
<ItemsControl>
<TextBox TextWrapping="Wrap"/>
<TextBox TextWrapping="Wrap"/>
<TextBox TextWrapping="Wrap"/>
</ItemsControl>
我只想保留 ListBox
控件,因为它的其他行为是我需要的。有什么想法吗?
最佳答案
这将禁用水平滚动(即使听起来它只是禁用可见性):
<ListBox HorizontalContentAlignment="Stretch"
ScrollViewer.HorizontalScrollBarVisibility="Disabled">
关于c# - 防止 ListBox 中的项目超出其宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23096551/