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 的操作有机会运行布局并在链接容器之间触发内容重新平衡。 例如,可能需要执行此操作以准备用于打印的布局。 有关此方案的示例,请参阅 Print 示例中的 #5 方案。
提示
如果你有使用数据绑定到 UI 的方案,并且未看到布局反映数据源集合中的更新,则调用 UpdateLayout 可能无济于事。 更有可能是绑定声明、数据上下文或数据源中的 INotifyPropertyChanged 或 INotifyCollectionChanged 支持出现问题。