我正在 WPF 中编写自定义控件。该控件有几个属性会导致控件的逻辑树的更新。这种形式有几种方法:
private static void OnXXXPropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
{
((MyControl)obj).RebuildTree();
}
假设该RebuildTree()
方法非常复杂且冗长,并且如果用户更改了多个属性,则该方法会被多次调用,从而导致应用程序变慢和挂起。
我想以 Windows 窗体的方式介绍类似BeginUpdate()
和EndUpdate()
方法(以确保只调用一次更新),但这种做法在 WPF 中被广泛反对。
我知道渲染器的优先级较低,可能不会出现闪烁,但是为什么要多次调用相同的更新方法来破坏宝贵的运行时间呢?
关于如何有效更新多个依赖属性(在设置每个属性后不更新整个控件),是否有任何官方最佳实践?