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 또는 변경된 컨트롤 템플릿)과 같은 다양한 이유로 개체 수명 동안 런타임에 발생할 수도 있습니다. LayoutUpdated 이벤트는 레이아웃 시퀀스의 모든 SizeChanged 이벤트가 발생한 후에 발생합니다.

LayoutUpdated는 처리기가 연결된 개체가 그 아래의 시각적 트리에서 아무 것도 변경하지 않을 때 발생할 수 있습니다. instance 경우 공간을 공유하는 두 개의 자식 요소가 있는 레이아웃 컨테이너를 상상해 보세요. 첫 번째 개체가 새 레이아웃을 강제로 적용하는 속성을 변경하면 두 번째 개체가 자체 자회사 레이아웃이 변경되지 않더라도 위치가 변경될 수 있으므로 두 개체 모두 LayoutUpdated를 발생합니다.

LayoutUpdated를 처리할 때 보낸 사람 값을 사용하지 마세요. LayoutUpdated의 경우 발신자 는 처리기가 연결된 위치에 관계없이 항상 null입니다. 이는 처리기가 시각적 트리에서 이벤트를 발생시킨 특정 요소임을 암시하는 것과 같이 보낸 사람에게 의미를 할당하지 못하도록 하기 위한 것입니다. LayoutUpdated는 전체 시각적 트리의 항목이 변경되었음을 의미하며 트리의 모든 특정 개체에는 이 항목을 처리하는 옵션이 있습니다. 하위 수준 렌더링 API 디자인에 익숙한 경우 개체 기반의 유지 모드 렌더링 논리의 일부로 설정되는 "다시 그리기 필요" 플래그와 유사하게 LayoutUpdated가 발생하는 것과 동일할 수 있습니다.

LayoutUpdated는 많은 상황에서 발생하며 실제로 변경되는 개체에 항상 특정되지 않으므로 SizeChanged 이벤트를 대신 처리하는 것이 시나리오에 더 적합한지 여부를 고려합니다.

Windows 8 동작

Windows 8에서는 이 이벤트에 대한 여러 수신기를 추적하는 데 문제가 있었습니다. 이벤트에 대한 수신기/처리기가 여러 개 있는 경우 해당 수신기 중 하나를 제거하려고 하면 모든 수신기가 제거됩니다. 문제는 Windows 8.1 시작해서 수정됩니다. 구문을 사용하여 -= 이벤트 처리기를 제거하면 한 번에 하나의 수신기만 제거됩니다. 이벤트당 여러 수신기를 처리하는 것은 일반적이지 않은 시나리오이므로 대부분의 코드에는 변경 또는 동작 검사가 필요하지 않습니다.

Windows 8용으로 컴파일되었지만 Windows 8.1에서 실행하는 앱은 Windows 8 동작을 계속 사용합니다.

적용 대상

추가 정보