ListBoxItem高度未更新

时间:2010-05-01 13:55:12

标签: wpf listbox height listboxitem invalidation

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

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

任何人都可以帮我这个吗?

感谢名单, 吉利

2 个答案:

答案 0 :(得分:0)

只是为了它,我做了以下几点:

    <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>

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

如果你发布你的代码,我们可以看一看,看看有什么不妥。

答案 1 :(得分:0)

以此为例:

    <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>

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

感谢名单, 吉利