【发布时间】:2021-08-12 06:02:05
【问题描述】:
我是 WPF 的新手,我的应用程序的性能存在一些问题。解决方案应该是 VirtualizingWrapPanel。我做了一些研究,没有多少教程或文档可以解释如何正确使用它。我下载了一个示例项目并构建了一个 DLL (https://github.com/sbaeumlisberger/VirtualizingWrapPanel)。然后我在我的程序中引用了这个并尝试了这个代码:
<vwp:VirtualizingItemsControl VirtualizingPanel.CacheLengthUnit="Item" VirtualizingPanel.ScrollUnit="Pixel" VirtualizingPanel.VirtualizationMode="Recycling">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<vwp:VirtualizingWrapPanel Orientation="Vertical" SpacingMode="None" StretchItems="False"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<local:my_custom_control/>
<local:my_custom_control/>
<local:my_custom_control/>
<local:my_custom_control/>
<local:my_custom_control/>
<local:my_custom_control/>
...
</vwp:VirtualizingItemsControl>
但是,此代码不起作用,并且具有与普通环绕面板完全相同的性能。有谁知道问题是什么?如果这听起来很愚蠢或类似的东西,我很抱歉,我对这些东西有点陌生。
【问题讨论】:
-
虚拟化面板的目的是避免“显示”未在可见区域中绘制的元素,之后......有一点边缘可以平滑它......当你向下滚动元素时被画了(我希望不要用preterit犯错误)。也许您应该从嵌入式 virtualizin(stack) 面板开始(如果我没记错的话)来确定对您的应用程序的影响。之后你可以更容易地知道这是一个 ui 问题,一个代码问题,或者问题是否来自控件(配置)
-
这是我的带有普通 WrapPanel 的程序:youtu.be/v5D2diycLnM。如您所见,性能非常好,据我所知,虚拟化应该有很大帮助。所以我的问题是如何正确使用 VirtualizationWrapPanel?我尝试了上面的代码,但这是不正确的。
标签: c# wpf virtualization wrappanel