【问题标题】:Preventing items in ListBox from exceeding its width防止 ListBox 中的项目超出其宽度
【发布时间】: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,文本也会继续向右流动,因为 ListBoxItemListBox 的宽度会调整为宽度内容(注意出现HorizontalScrollBar):

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

基本上,我正在寻找的行为是ItemsControl

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

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

【问题讨论】:

    标签: c# wpf listbox itemscontrol listboxitem


    【解决方案1】:

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

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

    【讨论】:

    • 太棒了!像魅力一样工作。非常感谢。
    猜你喜欢
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 2015-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-05
    • 2011-08-30
    相关资源
    最近更新 更多