我正在WPF中编写自定义控件。该控件具有多个属性,可以更新控件的逻辑树。有这种形式的几种方法:避免频繁更新WPF自定义控件
private static void OnXXXPropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
{
((MyControl)obj).RebuildTree();
}
假设RebuildTree()
方法是非常复杂的,lenghty如果用户改变了几个属性,这种方法称为多次造成应用减速和悬挂。
我想介绍一些类似于BeginUpdate()
和EndUpdate()
方法的Windows窗体方式(以确保更新只被调用一次),但是这种做法在WPF中被广泛阻挡。
我知道渲染具有较低的优先级和闪烁可能不会出现,但仍为什么要通过调用相同的更新方法多次糟蹋宝贵的运行时间?
是否有关于如何进行多依赖属性的有效的更新任何官方的最佳实践(而不更新设置每一个后整个控制)?
张贴了'RebuildTree()'方法的代码。另外,你的自定义控件是做什么的? –
@HighCore该方法创建一个复杂的3D模型(大量点),然后创建几个控件,每个控件都具有自定义着色器效果。我没有一个完整的代码,但我想解决这个一般问题(例如,想象一下,每次调用它时,该方法都会创建1 000个控件)。我希望应用程序在所有属性都设置完毕后才向用户显示最终结果,而不是中间步骤以及所有应该在“引擎盖下”发生的事情。 – Libor