UIElement.UpdateLayout 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
public:
virtual void UpdateLayout() = UpdateLayout;
void UpdateLayout();
public void UpdateLayout();
function updateLayout()
Public Sub UpdateLayout ()
注解
UpdateLayout 基本上相当于按顺序调用 InvalidateMeasure 和 InvalidateArrange 。
布局更新可以由应用代码强制执行,而不是依赖于使用 UpdateLayout 方法的内置布局系统行为。 但是,通常不建议这样做。 这通常是不必要的,如果过度使用,可能会导致性能不佳。 在许多情况下,由于属性更改,从应用代码调用 UpdateLayout 可能合适,布局系统可能已在处理更新。 布局系统还进行了优化,用于通过父子关系处理布局更改的级联,并且调用 UpdateLayout 可以应对此类优化。 不过,布局情况可能存在于更复杂的方案中,其中调用 UpdateLayout 是解决计时问题或其他布局问题的最佳选择。 只是故意和谨慎地使用它。 在确实需要调用 UpdateLayout 的情况下,你可能要在对公共布局父级的子元素的集合调用 Children.Add
之后调用它,然后在该父级上调用 UpdateLayout 以使布局系统识别新添加的子元素。
UpdateLayout 的一种方案是,当你拥有 RichTextBlock 和 RichTextBlockOverflow 等链接容器时,你已对内容进行了运行时更改,并且你希望确保未专门绑定到显示 UI 的操作有机会运行布局并在链接的容器之间触发内容重新平衡。 例如,你可能想要执行此操作来准备打印版式。 有关此方案的示例,请参阅 打印示例中的 #5 方案。
提示
如果存在使用 UI 的数据绑定的情况,并且未在数据源集合中看到布局反映更新,则调用 UpdateLayout 可能无济于事。 更有可能是绑定声明、数据上下文或数据源中的 INotifyPropertyChanged 或 INotifyCollectionChanged 支持出现问题。