【问题标题】:WPF ListView virtualization in a ScrollViewerScrollViewer 中的 WPF ListView 虚拟化
【发布时间】:2020-07-16 05:08:32
【问题描述】:

我有一个要求是在页面顶部显示用户信息,然后是图像的 ListView,并且我编写了以下代码(这是一个伪代码,但我认为这足以解释我所拥有的完成):

    <ScrollViewer>
        <StackPanel>
            <Grid>
                <!-- User Information Part -->
            </Grid> 
            <ListView> 
                <!-- Images Part, This is a custom virtualized ListView, it's ItemsPanel is a custom VirtualizingWrapPanel -->
            </ListView>
        </StackPanel>
    </ScrollViewer>

但在这种情况下,VirtualizingWrapPanel(已经在另一个没有明确 ScrollViewer 声明的单独 ListView 上进行了测试并且它可以正常工作)和 ListView 的虚拟化将不起作用,因为 ScrollViewer 的所需高度是正无穷大并且所有ListView中的item会被展开渲染,不知道有没有办法可以让ScrollViewer中的ListView虚拟化?谢谢

【问题讨论】:

    标签: c# wpf listview .net-core ui-virtualization


    【解决方案1】:

    你不能虚拟化一个包含所有元素的列表(因为StackPanel),

    适合您的解决方法:您需要一个 ListView。第一行自定义显示用户信息部分,所有其他行显示图像。

    【讨论】:

    • 我没有投反对票,我想考虑您的建议,但似乎实际上不可能自定义 ListView 中的特定行,其中具有 WrapPanel,因为它是 ItemsPanel
    • 每一行都有不同的 DataTemplate 是可能的,无论 ItemsPanel 是什么,您都可以通过几种不同的方式(例如使用 DataTemplateSelector)来实现它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多