【发布时间】:2014-04-15 23:51:16
【问题描述】:
我确信这很简单,但我似乎无法弄清楚。基本上,我试图强迫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 控件,因为它有我需要的其他行为。有什么想法吗?
【问题讨论】:
标签: c# wpf listbox itemscontrol listboxitem