【问题标题】:WrapPanel displaying ListView is not virtualizing显示 ListView 的 WrapPanel 未虚拟化
【发布时间】:2016-03-04 18:49:48
【问题描述】:

我测试了许多虚拟化变体,但没有得到工作版本。我通过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>

有什么想法吗?

谢谢, 谢

【问题讨论】:

  • 没有像StackPanelVirtualizingStackPanel 那样支持虚拟化的WrapPanel 的内置版本。基本上当你使用WrapPanel 时,虚拟化是关闭的。您可以尝试使用VirtualizingWrapPanel,但它并不完美,问题也很少

标签: wpf listview virtualization


【解决方案1】:

看看HereHere,告诉你如何获得一个虚拟化包装面板。

【讨论】:

  • 如果您在使用这些方面需要任何帮助,请告诉我。
  • 您建议的解决方案是否可靠且经过测试,或者有任何问题?
  • 您建议的解决方案是否可靠且经过测试,或者有任何问题?
  • 哈哈哈,你不必复制粘贴它们,接受想法并实施,如果你仔细阅读链接,你就会知道它们是什么状态......猜猜它们对我们大多数人来说都很好,取决于您如何使用解决方案
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多