WPF列大小调整性能问题

WPF列大小调整性能问题

问题描述:

是否存在与Grid Grid调整大小相关的WPF中的任何已知性能问题?WPF列大小调整性能问题

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

关于我的具体情况更多的细节:

我可以在我的专栏两个不同的东西;组合框或TextBlock。组合框应该填充整列,然后按列调整大小,然后单击具有TextBlock的列的空白区域应选择该行。这是问题所在。对于所有的解决方案,我必须调整列大小缓慢。调整大小顺序的唯一方法是找到它,方法是在方向=“水平”方向外面添加一个StackPanel,但是我无法实现上述样式。

这里有一些意见:

  • 添加样式Horizo​​ntalContentAlignment =“拉伸”到列表中的项目,使组合框延伸及的TextBlocks点击,但也列调整缓慢。
  • 将Background =“Transparent”添加到StackPanel或插入到它们中的元素也解决了问题,但调整速度很慢。
  • 添加具有属性Orientation =“Horizo​​ntal”的外部StackPanel使调整大小平滑,但我无法应用所述的样式。
+1

我以前在我的应用程序中见过这个,但它不再发生,我不知道为什么。对不起,没有信息,但至少你知道你并不疯狂。你使用的是什么版本的.NET框架。微软声称在3.5和3.5 SP1中有很多性能改进。 – PeterAllenWebb 2009-05-06 13:58:42

您是否尝试过虚拟化ListView中的元素?虚拟化时,虚拟化面板仅为视图中的元素创建视觉效果。这可以让您拥有大量的项目,而不会像您提到的那样出现性能问题。有关更多详细信息,请参阅VirtualizingStackPanel。还有The Layout System。您可以创建自己的虚拟化面板。如果你在谷歌上查找“virtualizing + wpf”,你会发现虚拟化Canvases,WrapPanels等很多点击。

我希望这有助于。

+0

我们已经尝试过早先对元素进行虚拟化。我不确定这是否解决了调整大小问题,但是在我们的列表中使用虚拟化滚动是一种糟糕的体验(很慢!),所以我们无法使用它。我们的结论是,在简单的测试应用程序中得到同样的问题后,这在​​WPF中可能还不成熟。对此有何意见? – stiank81 2009-05-10 19:57:17