Silverlight 4.0 如何优化具有数百个独立自定义用户控件的画布的性能

Silverlight 4.0 如何优化具有数百个独立自定义用户控件的画布的性能,silverlight-4.0,Silverlight 4.0,我正在编写一个应用程序,在画布上可能有数百个自定义用户控件。所有这些控件都可以在屏幕上拖动,并且有多条线将它们连接到至少一个其他用户控件。一旦达到250个左右的自定义用户控件,性能就会开始显著下降,帧速率将达到10或更低 对于如何在这种情况下优化性能,是否有任何最佳实践或想法?问题似乎在于画布上在任何时候都有大量的控件 谢谢 ~Steve不幸的是,没有……这成了一个系统资源问题 解决这一问题的一种方法是以某种形式使用虚拟化,就像使用虚拟化一样。这可以归结为从可视化树中删除项目,并在需要显示项目时

我正在编写一个应用程序,在画布上可能有数百个自定义用户控件。所有这些控件都可以在屏幕上拖动,并且有多条线将它们连接到至少一个其他用户控件。一旦达到250个左右的自定义用户控件,性能就会开始显著下降,帧速率将达到10或更低

对于如何在这种情况下优化性能,是否有任何最佳实践或想法?问题似乎在于画布上在任何时候都有大量的控件

谢谢


~Steve

不幸的是,没有……这成了一个系统资源问题


解决这一问题的一种方法是以某种形式使用虚拟化,就像使用虚拟化一样。这可以归结为从可视化树中删除项目,并在需要显示项目时保留对该项目的引用。不强制渲染项将显著减少所需的系统资源。如果所有项目都需要在给定时间呈现,那么此时将成为系统资源问题。控制尽可能小,并将anotmation等操作保持在最低限度,因为它们会对系统造成负担。

我完成了手动循环和可见性。主画布上的所有项目都已折叠(通常约2/3个)。我没有通过数据绑定放置任何东西,因此我无法使用虚拟化堆栈面板。显然,从视觉树中删除项目是一个不错的选择。