UIElement.UpdateLayout 方法

定义

确保针对布局正确更新 UIElement 的子对象的所有位置。

public:
 virtual void UpdateLayout() = UpdateLayout;
void UpdateLayout();
public void UpdateLayout();
function updateLayout()
Public Sub UpdateLayout ()

注解

UpdateLayout 基本上相当于按顺序调用 InvalidateMeasureInvalidateArrange

布局更新可以由应用代码强制执行,而不是依赖于使用 UpdateLayout 方法的内置布局系统行为。 但是,通常不建议这样做。 这通常是不必要的,如果过度使用,可能会导致性能不佳。 在许多情况下,由于属性更改,从应用代码调用 UpdateLayout 可能合适,布局系统可能已在处理更新。 布局系统还进行了优化,用于通过父子关系处理布局更改的级联,并且调用 UpdateLayout 可以应对此类优化。 不过,布局情况可能存在于更复杂的方案中,其中调用 UpdateLayout 是解决计时问题或其他布局问题的最佳选择。 只是故意和谨慎地使用它。 在确实需要调用 UpdateLayout 的情况下,你可能要在对公共布局父级的子元素的集合调用 Children.Add 之后调用它,然后在该父级上调用 UpdateLayout 以使布局系统识别新添加的子元素。

UpdateLayout 的一种方案是,当你拥有 RichTextBlockRichTextBlockOverflow 等链接容器时,你已对内容进行了运行时更改,并且你希望确保未专门绑定到显示 UI 的操作有机会运行布局并在链接的容器之间触发内容重新平衡。 例如,你可能想要执行此操作来准备打印版式。 有关此方案的示例,请参阅 打印示例中的 #5 方案。

提示

如果存在使用 UI 的数据绑定的情况,并且未在数据源集合中看到布局反映更新,则调用 UpdateLayout 可能无济于事。 更有可能是绑定声明、数据上下文或数据源中的 INotifyPropertyChangedINotifyCollectionChanged 支持出现问题。

适用于

另请参阅