내보내기(0) 인쇄
모두 확장
정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

FrameworkElement.LayoutUpdated 이벤트

2013-12-13

Windows Phone 시각적 트리의 레이아웃이 변경될 때 발생합니다.

Namespace:  System.Windows
어셈블리:  System.Windows(System.Windows.dll)
XMLNS for XAML: xmlns에 매핑되지 않습니다.

‘선언
Public Event LayoutUpdated As EventHandler
<frameworkElement LayoutUpdated="eventhandler"/>

LayoutUpdated는 컨트롤이 상호 작용할 준비가 되기 전에 시퀀스에서 발생하는 마지막 개체 수명 이벤트입니다. 그러나 개체 수명 중에 다양한 이유로 LayoutUpdated가 런타임에 발생할 수도 있습니다. 속성 변경, 창 크기 조정 또는 명시적 요청(UpdateLayout 또는 ApplyTemplate) 때문일 수 있습니다. LayoutUpdated 이벤트는 트리에 있는 가능한 모든 SizeChanged 이벤트가 발생한 후에 발생됩니다.

Windows Phone에서 이 이벤트는 라우트된 이벤트가 아니라 표준 CLR 이벤트로, RoutedEventArgs가 아니라 EventArgs를 사용합니다.

LayoutUpdated는 처리기가 연결된 개체가 시각적 트리에서 개체 아래에 있는 어떤 항목도 변경할 필요가 없는 경우에 발생할 수 있습니다. 예를 들어 두 개의 요소가 있는 레이아웃 컨테이너를 가정해 보세요. 첫 번째 개체가 속성을 변경하여 새 레이아웃이 필요한 경우 두 번째 개체는 해당 보조 레이아웃이 변경되지 않아도 위치가 조정될 수 있으므로 두 개체가 모두 LayoutUpdated를 발생합니다.

LayoutUpdated를 처리할 때 sender 값을 사용하지 마세요. LayoutUpdated의 경우 sender는 처리기가 연결된 위치와 상관없이 항상 Nothing입니다. 이는 처리기에서 sender가 시각적 트리에서 이벤트를 발생한 특정 요소임을 나타내는 등 sender에 특별한 의미를 부여하는 것을 방지하기 위한 것입니다. 대신 LayoutUpdated는 전체 Windows Phone 시각적 트리의 한 부분이 변경되었고 트리에 있는 각각의 특정 개체가 이러한 발생을 처리할 수 있음을 나타냅니다.

이벤트 배열은 Windows Phone OS 7.1과 Windows Phone 8에서 정확히 동일하지는 않습니다. 이 때문에, 초기 LayoutUpdated 이벤트의 크기는 처음 Windows Phone 8에서 실행될 때 올바르지 않습니다. 두 번째 실행될 때에는 크기가 올바르게 됩니다.

LayoutUpdated에서 크기를 사용하는 경우에는, 먼저 ActualWidthActualHeight가 0보다 크고 올바른지 확인하여 이러한 차이를 해결할 수 있습니다. 다음 예제 코드는 이러한 차이를 처리하는 방법을 보여 주고, Windows Phone OS 7.1 및 Windows Phone 8 모두에 대해 작동합니다.

double currentUIERWidth = 0, currentUIERHeight = 0;

void MainPage_LayoutUpdated(object sender, EventArgs e)
{
    if (LayoutRoot.ActualWidth > 0 && LayoutRoot.ActualHeight > 0 &&
      (LayoutRoot.ActualWidth != currentUIERWidth ||
      LayoutRoot.ActualHeight != currentUIERHeight))
    {
        uiRenderer = new UIElementRenderer(LayoutRoot, (int)LayoutRoot.ActualWidth, (int)LayoutRoot.ActualHeight);
        currentUIERWidth = LayoutRoot.ActualWidth;
        currentUIERHeight = LayoutRoot.ActualHeight;
    }
}

Windows Phone OS

지원되는 버전: 8.0, 7.1, 7.0

Windows Phone

표시:
© 2014 Microsoft