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 的操作有机会运行布局并在链接容器之间触发内容重新平衡。 例如,可能需要执行此操作以准备用于打印的布局。 有关此方案的示例,请参阅 Print 示例中的 #5 方案。

提示

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

适用于

另请参阅