다음을 통해 공유


UIElement.UpdateLayout 메서드

정의

레이아웃에 대해 UIElement 의 자식 개체의 모든 위치가 제대로 업데이트되었는지 확인합니다.

public:
 virtual void UpdateLayout() = UpdateLayout;
void UpdateLayout();
public void UpdateLayout();
function updateLayout()
Public Sub UpdateLayout ()

설명

UpdateLayout은 기본적으로 InvalidateMeasureInvalidateArrange 를 순서대로 호출하는 것과 동일합니다.

UpdateLayout 메서드를 사용하여 기본 제공 레이아웃 시스템 동작에 의존하지 않고 앱 코드에서 레이아웃 업데이트를 강제 적용할 수 있습니다. 그러나 일반적으로 권장되지는 않습니다. 일반적으로 불필요하며 과용되는 경우 성능이 저하될 수 있습니다. 속성 변경으로 인해 앱 코드에서 UpdateLayout을 호출하는 것이 적절할 수 있는 많은 상황에서 레이아웃 시스템은 이미 업데이트를 처리하고 있을 것입니다. 레이아웃 시스템에는 부모-자식 관계를 통해 레이아웃 변경의 연속을 처리하기 위한 최적화가 있으며 UpdateLayout을 호출하면 이러한 최적화에 대해 작동할 수 있습니다. 그럼에도 불구하고 UpdateLayout을 호출하는 것이 타이밍 문제 또는 다른 레이아웃 문제를 해결하는 가장 좋은 옵션인 더 복잡한 시나리오에서 레이아웃 상황이 존재할 수 있습니다. 고의적이고 아끼는 용도로 사용하세요. UpdateLayout을 호출해야 하는 경우 공통 레이아웃 부모의 일부 자식 요소 컬렉션을 호출 Children.Add 한 직후에 호출한 다음, 해당 부모에서 UpdateLayout을 호출하여 레이아웃 시스템이 새 추가된 자식 항목을 인식하도록 할 것입니다.

UpdateLayout의 한 가지 시나리오는 RichTextBlock 및 RichTextBlockOverflow와 같은 연결된 컨테이너가 있는 경우 콘텐츠를 런타임으로 변경했으며, UI 표시에 특별히 연결되지 않은 작업이 레이아웃을 실행하고 연결된 컨테이너 간에 콘텐츠 리밸런스를 트리거할 수 있도록 하는 것입니다. 예를 들어 인쇄할 레이아웃을 준비하기 위해 이 작업을 수행할 수 있습니다. 이 시나리오의 예제는 인쇄 샘플의 #5 시나리오를 참조하세요.

UI에 데이터 바인딩을 사용하는 시나리오가 있고 레이아웃이 데이터 원본 컬렉션의 업데이트를 반영하는 것을 볼 수 없는 경우 UpdateLayout을 호출하는 것은 도움이 되지 않을 것입니다. 데이터 원본에서 바인딩 선언, 데이터 컨텍스트 또는 INotifyPropertyChanged 또는 INotifyCollectionChanged 지원에 문제가 있을 가능성이 높습니다.

적용 대상

추가 정보