FrameworkElement.LayoutUpdated 事件

定义

由于与布局相关的属性更改值或刷新布局的其他操作,可视化树的布局更改时发生。

// Register
event_token LayoutUpdated(EventHandler<IInspectable> const& handler) const;

// Revoke with event_token
void LayoutUpdated(event_token const* cookie) const;

// Revoke with event_revoker
FrameworkElement::LayoutUpdated_revoker LayoutUpdated(auto_revoke_t, EventHandler<IInspectable> const& handler) const;
public event System.EventHandler<object> LayoutUpdated;
function onLayoutUpdated(eventArgs) { /* Your code */ }
frameworkElement.addEventListener("layoutupdated", onLayoutUpdated);
frameworkElement.removeEventListener("layoutupdated", onLayoutUpdated);
- or -
frameworkElement.onlayoutupdated = onLayoutUpdated;
Public Custom Event LayoutUpdated As EventHandler(Of Object) 
<frameworkElement LayoutUpdated="eventhandler"/>
 

事件类型

注解

LayoutUpdated 是在控件准备好交互之前 XAML 加载序列中发生的最后一个对象生存期事件。 但是, LayoutUpdated 也可能在对象生存期内的运行时发生,原因有多种:属性更改、窗口大小调整或运行时布局请求 (UpdateLayout 或) 更改的控件模板。 在布局序列中的所有 SizeChanged 事件发生后,将LayoutUpdated触发该事件。

LayoutUpdated 当附加处理程序的对象不一定更改其下的可视化树中的任何内容时,可能发生。 例如,假设有两个子元素共享空间的布局容器。 如果第一个对象更改强制新布局的属性,则这两个对象都会触发 LayoutUpdated,因为即使其自己的附属布局不更改,第二个对象也可能被重新定位。

处理 LayoutUpdated时,不要依赖于 发送方 值。 对于 LayoutUpdated,无论处理程序附加到何处, 发送方 始终 null为 。 这是为了防止处理程序向 发送方分配任何含义,例如暗示是该特定元素从可视化树中激发了事件。 LayoutUpdated 表示整个可视化树中的某些内容已更改,并且树中任意位置的每个特定对象都可以选择处理此事件。 如果你熟悉较低级别的呈现 API 设计,则可以将触发等同于 LayoutUpdated 在对象驱动的保留模式呈现逻辑中设置的“需要重绘”标志。

由于 LayoutUpdated 在很多情况下触发,并且并非始终特定于实际更改的对象,因此请考虑处理 SizeChanged 事件是否更适合你的方案。

适用于

另请参阅