InvalidateVisual是否以懒惰的方式工作?

时间:2014-07-09 10:58:01

标签: c# wpf custom-controls rendering invalidation

如果我在自定义WPF控件中调用InvalidateVisual,那么实际的布局评估和渲染过程何时发生?

当我完成处理时,立即或 - 与WinForms类似 -

1 个答案:

答案 0 :(得分:3)

在线帮助解答了您的问题:

InvalidateVisual的在线帮助:

  

此方法在内部调用InvalidateArrange。

InvalidateArrange的在线帮助:

  

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

换句话说:InvalidateVisual没有立即生效;它会一直等到你当前的代码完成(除非你打电话给UpdateLayout)。

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