防止ListBox中的项超出其宽度

时间:2014-04-15 23:51:17

标签: c# wpf listbox itemscontrol listboxitem

我确信这很简单,但我似乎无法弄明白。基本上,我试图强迫ListBoxItem允许自己超出ListBox宽度。例如,我们假设每个ListBox都有一个粗略的TextBox ListBoxItem

<ListBox HorizontalContentAlignment="Stretch">
    <ListBoxItem>
        <TextBox TextWrapping="Wrap"/>
    </ListBoxItem>
    <ListBoxItem>
        <TextBox TextWrapping="Wrap"/>
    </ListBoxItem>
    <ListBoxItem>
        <TextBox TextWrapping="Wrap"/>
    </ListBoxItem>
</ListBox>

如果您要输入它们,那么TextWrapping设置为Wrap的文本将继续向右移动,如ListBoxItem和{ListBox的宽度{1}}调整内容的宽度(请注意HorizontalScrollBar出现):

enter image description here

我确定这是一个预期的行为,可能是由模板中的ScrollViewer引起的,但我希望文本包装并包含在原始宽度内。我可以通过设置一个静态宽度来解决这个问题,但这将是一个粗略的设计决定,而不是我想要做的事情(它会限制事情的重新调整大小)。

基本上,我寻求的行为是ItemsControl

<ItemsControl>
    <TextBox TextWrapping="Wrap"/>
    <TextBox TextWrapping="Wrap"/>
    <TextBox TextWrapping="Wrap"/>
</ItemsControl>

enter image description here

我只想保留ListBox控件,因为它需要我的其他行为。有什么想法吗?

1 个答案:

答案 0 :(得分:5)

这将禁用水平滚动(即使它听起来只是禁用可见性)

<ListBox HorizontalContentAlignment="Stretch"
         ScrollViewer.HorizontalScrollBarVisibility="Disabled">