如果在自定义WPF控件中调用InvalidateVisual,什么时候进行实际的布局评估和渲染过程?

立即完成-与WinForms中类似-当我完成处理时?

最佳答案

在线帮助回答您的问题:

InvalidateVisual的在线帮助:


  此方法在内部调用InvalidateArrange。


InvalidateArrange的在线帮助:


  使元素的排列状态(布局)无效。无效后,元素将更新其布局,除非随后由UpdateLayout强制,否则布局将异步发生。


换句话说:InvalidateVisual不会立即生效;它会等到您当前的代码完成为止(除非您已调用UpdateLayout)。

您还可以查看Microsoft的参考源:http://referencesource.microsoft.com/#q=UIElement.InvalidateArrange。您会看到InvalidateArrange()不会调用任何阻止代码。它立即返回。

09-25 15:17