【问题标题】:ListBoxItem height not getting updatedListBoxItem 高度未更新
【发布时间】:2011-02-14 13:32:16
【问题描述】:

我在另一个列表框中有一个列表框,在内部列表框中,列表框的高度可能会增加或缩小。我的问题是,当内部项目缩小时,外部列表框不会重新呈现其高度。因此 - 在内部列表缩小之前保持先前的高度。

我在这里尝试了很多东西,包括所有类型的无效、应该更新的列表框项目的选择和取消选择等等 - 没有任何帮助....

谁能帮我解决这个问题?

谢谢, 吉利

【问题讨论】:

  • 你能发布一些代码吗?内部列表框高度是否设置为自动?我假设您希望内部列表框项目增长/缩小,改变它的高度,从而也改变外部框的高度。

标签: wpf listbox height listboxitem invalidation


【解决方案1】:

为了它,我做了以下事情:

    <Grid x:Name="LayoutRoot">
    <ListBox HorizontalAlignment="Left" Width="283" VerticalAlignment="Top">
        <ListBox Margin="0,0,-274,0">
            <ListBoxItem Content="Text"/>
            <ListBoxItem Content="Text"/>
            <ListBoxItem Content="Text"/>
            <ListBoxItem Content="Text"/>
            <ListBoxItem Content="Text"/>
            <ListBoxItem Content="Text"/>
        </ListBox>
        <ListBox Margin="0,0,-274,0">
            <ListBoxItem Content="Text"/>
            <ListBoxItem Content="Text"/>
            <ListBoxItem Content="Text"/>
            <ListBoxItem Content="Text"/>
            <ListBoxItem Content="Text"/>
            <ListBoxItem Content="Text"/>
        </ListBox>
        <ListBox Margin="0,0,-274,0">
            <ListBoxItem Content="Text"/>
            <ListBoxItem Content="Text"/>
            <ListBoxItem Content="Text"/>
        </ListBox>
        <ListBox Margin="0,0,-274,0">
            <ListBoxItem Content="Text"/>
            <ListBoxItem Content="Text"/>
            <ListBoxItem Content="Text"/>
            <ListBoxItem Content="Text"/>
            <ListBoxItem Content="Text"/>
            <ListBoxItem Content="Text"/>
        </ListBox>
    </ListBox>
</Grid>

现在我意识到列表框中的项目不是在运行时创建的,但是我创建了一个带有单击处理程序的小按钮,它将项目添加到中间列表框之一,并且所有内容都适当地调整大小。

如果您发布您的代码,我们可以看看有什么问题。

【讨论】:

    【解决方案2】:

    以此为例:

        <ListBox VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Width="500">
            <ListBox x:Name="Item1" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Width="300" BorderBrush="Red" BorderThickness="5">
                <ListBox.Items>
                    <RichTextBox VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Width="300" SizeChanged="OnInnserItemSizeChanged"/>
                    <RichTextBox VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Width="300"/>
                    <RichTextBox VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Width="300"/>
                </ListBox.Items>
            </ListBox>
            <ListBox x:Name="Item2" BorderBrush="Green" BorderThickness="5" Width="300" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
                <ListBox.Items>
                    <RichTextBox VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Width="300"/>
                    <RichTextBox VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Width="300"/>
                    <RichTextBox VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Width="300"/>
                </ListBox.Items>
            </ListBox>            
        </ListBox>
    

    现在,当我运行它并在其中一个 RichTextBoxes 中单击“Enter”/“Return”时,外部列表框项目会拉伸以匹配新大小 - 但是当我删除新添加的行时,它不会重新调整大小恢复到原来的大小...

    谢谢, 吉利

    【讨论】:

    • Gili - 我建议您将更新后的问题材料放回原始问题中作为编辑。 Stack Overflow 上的答案仅用于提供原始问题的答案,仅此而已。
    猜你喜欢
    • 2013-07-17
    • 2012-02-14
    • 1970-01-01
    • 2018-09-13
    • 1970-01-01
    • 2015-08-10
    • 2016-06-03
    • 1970-01-01
    • 2019-03-03
    相关资源
    最近更新 更多