【问题标题】:Proper usage of VirtualizingStackPanel in WPF在 WPF 中正确使用 VirtualizingStackPanel
【发布时间】:2011-06-14 21:26:08
【问题描述】:

有人可以告诉我如何在 WPF 中正确使用 VirtualizingStackPanel 吗?我已经在我的 ItemsPanelTemplate 中为我的 ItemsControl 设置了一个 VirtualizingStackPanel,并将其设置为我的 ItemsHost,但是当我在我的项目控件上注册 CleanUpVirtualizedItem 附加事件的侦听器时,没有任何反应。我没有看到该事件被调用。我也没有看到我的数据模板中的自定义控件上的任何 Unloaded 事件被调用,这向我表明没有实际的虚拟化正在进行。任何帮助将不胜感激。

【问题讨论】:

  • 对于以后阅读本文的任何人来说,关键是 ItemsPresenter 位于 ScrollViewer 下方,位于 ItemsControl 的 ControlTemplate 中。

标签: wpf virtualizingstackpanel itemspanel


【解决方案1】:

尝试使用 ListBox 或 ListView:

<ListBox ItemsSource="{Binding Items}"
    VirtualizingStackPanel.VirtualizationMode="Recycling" 
    VirtualizingStackPanel.CleanUpVirtualizedItem="ItemsControl_CleanUpVirtualizedItem">
</ListBox>

ListBox 将自动处理项目的虚拟化 - 如果您直接创建 VirtualizingStackPanel,则需要做更多的手动工作。这是因为 ItemsControl 的默认 ControlTemplate 没有 ScrollViewer,这是虚拟化的关键 - 更多信息 here

【讨论】:

    猜你喜欢
    • 2011-07-14
    • 2010-11-26
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 2010-12-27
    • 2023-03-27
    • 2018-01-24
    相关资源
    最近更新 更多