显示ListView的WrapPanel未虚拟化

时间:2015-03-02 09:59:57

标签: wpf listview virtualization

我测试了很多虚拟化版本,但没有得到可用的版本。我通过Snoop检查了虚拟化,其中虚拟化可视树仅包含显示的项目,非虚拟化包含所有项目。

ItemsSource(NumberList)包含500个项目(整数1..500)。 以下版本已虚拟化:

    <Grid>
        <ListView Name="lbDefault" Margin="15,10" Width="300" Height="200"
     ItemsSource="{Binding NumberList}"
     ScrollViewer.VerticalScrollBarVisibility="Auto"  
     ScrollViewer.HorizontalScrollBarVisibility="Disabled">
            <ListView.ItemsPanel>
                <ItemsPanelTemplate>
                    <VirtualizingStackPanel/>
                </ItemsPanelTemplate>
            </ListView.ItemsPanel>
        </ListView>
    </Grid>

以下代码无效:

<Grid>
    <ListView Name="lbDefault" Margin="15,10" Width="300" Height="200"
     ItemsSource="{Binding NumberList}"
     ScrollViewer.VerticalScrollBarVisibility="Auto"  
     ScrollViewer.HorizontalScrollBarVisibility="Disabled"
     VirtualizingPanel.IsVirtualizing="True" 
     ScrollViewer.CanContentScroll="True">
        <ListView.ItemsPanel>
            <ItemsPanelTemplate>
                <WrapPanel/>
            </ItemsPanelTemplate>
        </ListView.ItemsPanel>
    </ListView>
</Grid>

有什么想法吗?

谢谢, 晒

2 个答案:

答案 0 :(得分:0)

看看HereHere,告诉您如何获得虚拟化包裹面板。

答案 1 :(得分:0)

如果您还没找到解决方案,可以查看我的VirtualizingWrapPanel:https://github.com/Thomas-Hoffmann/HorizontalVirtualizingWrapPanel