代码之家  ›  专栏  ›  技术社区  ›  stiank81

WPF列大小调整性能问题

  •  3
  • stiank81  · 技术社区  · 16 年前

    在WPF中,是否有任何与网格列大小调整相关的已知性能问题?

    我有一个应用程序,我需要在一个列中做一些特定的事情,但是对于所有不同的解决方案,我发现列的大小调整会变慢。当我的列表中的元素通常超过1000个时,这就适用了,但是我认为这对于WPF来说不算太多。所以,一般的问题是,您是否经历过列大小调整缓慢的过程,以及是否找到了解决方案?是什么引起的?

    有关我的特定案例的更多详细信息:

    我的列中可以有两种不同的东西:组合框或文本块。组合框应填充整个列,并随后调整列大小,单击带有文本块的列的空白区域应选择该行。这就是问题所在。对于所有的解决方案,我必须这样做,列的大小调整会变慢。我找到的使调整平滑的唯一方法是在其外部添加一个stackpanel,其中orientation=“horizontal”,但这样我就无法实现上面描述的样式。

    以下是一些观察结果:

    • 将style horizontalContentAlignment=“Stretch”添加到列表项中会使组合框可拉伸,文本块可单击,但列的调整速度较慢。
    • 将background=“transparent”添加到stackpanel或插入其中的元素也解决了问题,但会使调整速度变慢。
    • 添加一个具有property orientation=“horizontal”的外部stackpanel可以平滑地调整大小,但我无法应用所描述的样式。
    1 回复  |  直到 16 年前
        1
  •  2
  •   Josh G    16 年前

    是否尝试虚拟化ListView中的元素?当您进行虚拟化时,虚拟化面板只为视图中的元素创建视觉效果。这允许您拥有大量的项目,而不会像您提到的那样出现性能问题。参见 VirtualizingStackPanel 了解更多详细信息。阿尔索 The Layout System . 您可以创建自己的虚拟化面板。如果你在谷歌上搜索“virtualization+wpf”,你会发现很多虚拟化画布、包装板等的热门作品。

    我希望这有帮助。