WPF中的多级虚拟化

时间:2016-05-23 13:46:37

标签: wpf listview

我想知道在多层次结构中是否存在关于虚拟化的概念。

我有一个ListView,其中包含可以包含另一个ListView的元素。开箱即用只有顶级Listview支持虚拟化。

是否有任何解决方案可以让子列表虚拟化?

<ListView ItemsSource="{Binding Items}" VirtualizingStackPanel.IsVirtualizing="True"
          VirtualizingStackPanel.VirtualizationMode="Standard">
    <ListView.ItemTemplate>
        <DataTemplate>
            <StackPanel>
                <TextBox Text="{Binding Name}" />
                <!-- SubList-->
                <ListView ItemsSource="{Binding Items}" VirtualizingStackPanel.IsVirtualizing="True"
                          VirtualizingStackPanel.VirtualizationMode="Standard">
                    <ListView.ItemTemplate>
                        <DataTemplate>
                            <TextBox Text="{Binding Name}" />
                        </DataTemplate>
                    </ListView.ItemTemplate>
                </ListView>
            </StackPanel>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

enter image description here

1 个答案:

答案 0 :(得分:0)

要实现这一点,您必须限制每个孩子ListView的身高,就像窗口限制顶级ListView的高度一样,使滚动条显示出来。当您限制子ListView的高度时,如果需要,您将看到每个ListView的内部滚动条,然后您可以确定它们是虚拟化的。

如果这是不可接受的,则必须构建类似树状列表视图的内容