FrameworkElement.LayoutUpdated 事件
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
由于与布局相关的属性更改值或刷新布局的其他操作,可视化树的布局更改时发生。
// 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 事件是否更适合你的方案。