FrameworkElement.SizeChanged 이벤트
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
속성 중 하나 또는 속성에서 ActualHeight ActualWidth 값을 FrameworkElement변경할 때 발생합니다.
public:
virtual event SizeChangedEventHandler ^ SizeChanged;
// Register
event_token SizeChanged(SizeChangedEventHandler const& handler) const;
// Revoke with event_token
void SizeChanged(event_token const* cookie) const;
// Revoke with event_revoker
FrameworkElement::SizeChanged_revoker SizeChanged(auto_revoke_t, SizeChangedEventHandler const& handler) const;
public event SizeChangedEventHandler SizeChanged;
function onSizeChanged(eventArgs) { /* Your code */ }
frameworkElement.addEventListener("sizechanged", onSizeChanged);
frameworkElement.removeEventListener("sizechanged", onSizeChanged);
- or -
frameworkElement.onsizechanged = onSizeChanged;
Public Custom Event SizeChanged As SizeChangedEventHandler
<frameworkElement SizeChanged="eventhandler"/>
이벤트 유형
설명
SizeChanged는 개체에서 크기(또는 ActualHeight ActualWidth)가 변경되어 측정 값 및 정렬 패스가 완료된 후에 발생합니다.
SizeChangedEventArgs SizeChanged 이벤트에 대한 이벤트 데이터는 레이아웃 변경이 발생하기 전 요소의 크기를 나타내는 값과 NewSize 현재 크기를 나타내는 값이라는 두 가지 속성을 PreviousSize 제공합니다. 높이 및 너비 정보를 얻으려면 이벤트 처리기 내에서 이러한 SizeChangedEventArgs 속성에 Size 대한 구조 값의 Height 및 Width 값을 사용합니다.
SizeChanged 이벤트를 처리하는 한 가지 이유는 새 레이아웃으로 인해 요소와 요소의 ActualHeight ActualWidth 비율이 변경되었는지 확인하기 위해서입니다. 예를 들어 사용자가 앱 창의 크기를 조정하고 전체 앱 보기가 좁은 보기인 경우 이 오류가 발생할 수 있습니다.
SizeChanged는 레이아웃이 발생하기 전에 UI 요소의 값과 ActualWidth 값이 정의되지 않으므로 앱이 처음 활성화될 때 페이지에서 요소의 ActualHeight 초기 레이아웃 중에 발생합니다. 초기 레이아웃 패스 중에만 값을 가져오므로 SizeChanged 이벤트가 발생합니다. 그 후 앱의 수명 동안 다른 이유로 값과 ActualWidth 값이 변경되면 ActualHeight SizeChanged 이벤트가 요소에서 다시 발생할 수 있습니다. 여기에는 다음이 포함됩니다.
- 해당 요소를 특별히 조정하는 Height Width 코드입니다.
- 제약 조건 속성을 변경하는 코드(예: MinHeight MaxHeight 또는 영향을 주는 ActualHeight).
- 새로 고쳐진 데이터 바인딩 값 또는 레이아웃 관련 속성 FrameworkElement에 영향을 주는 새 스타일이 적용되었습니다.
- 요소의 부모 또는 같은 Panel ListBox 컨테이너의 차원을 조정하는 코드입니다. 이렇게 하면 레이아웃 패스가 트리거되는 경우가 많습니다. 새 레이아웃 조건으로 인해 포함된 자식 요소의 사용 가능한 공간이 더 많거나 적어질 수 있으며, 이로 인해 내부 요소와 새 ActualHeight ActualWidth 요소가 생성될 수 있습니다.
- 레이아웃 속성을 직접 변경하지 않더라도 런타임에 발생하는 다른 변경 내용으로 레이아웃 공간을 변경 FrameworkElement 합니다. 예를 들어 항목에 대한 데이터 바인딩을 기반으로 하는 목록은 새로 고치거나 업데이트될 수 있으며, 이로 인해 항목, 항목 컨트롤, 목록 보기 등의 크기가 변경될 수 있습니다. 또는 증분 로드를 지원하는 목록 보기는 더 많은 항목을 가져오고 목록 보기를 확장할 수 있습니다.
- 사용자는 앱 Window 크기(Window.SizeChanged 발생)를 변경하여 최상위 수준의 Page 크기와 "자동" 레이아웃 또는 스트레치 맞춤을 사용하고 차원을 지정하지 않은 해당 페이지 내 요소의 적응형 레이아웃 파생 크기에 영향을 줍니다.
- ApplicationView 창 및 페이지 차원과 잠재적으로 모든 UI 요소에 영향을 주는 변경 내용 또는 DisplayInformation 변경 내용입니다.
SizeChanged 처리기 내에서 현재 개체의 레이아웃에 영향을 주는 다른 API를 호출하지 않아도 됩니다. 예를 들어 설정 Height 또는 Width; 호출 또는 UpdateLayout호출 InvalidateMeasure ApplyTemplate; 자식 요소의 크기를 조정하여 부모 레이아웃을 무효화할 수 있는 모든 작업입니다. 레이아웃 엔진에는 개체가 이벤트를 다시 발생시키기 전에 값을 안정화하는 내부 논리가 있으므로 논리는 일반적으로 루프 조건을 방지할 수 있을 만큼 강력합니다. 그러나 앱을 중단시킬 수 있는 크기 조정 또는 렌더링 루프를 실수로 정의할 수 있습니다. 이 루프는 일반적으로 실제로 매달려 있는 것이 아니라 LayoutCycleException 과 같은 예외를 throw합니다. 이는 주변 레이아웃과 결합된 처리기 논리가 관련 개체의 크기에 대한 최종 결과에 도달할 수 없는 경우에 발생합니다.
부모 컨테이너 내에서 개체의 위치가 변경되지만 크기는 변경되지 않으면 SizeChanged가 발생하지 않습니다.
LayoutUpdated 는 비슷한 이벤트이지만 LayoutUpdated 위치 변경에 대해서도 발생합니다. LayoutUpdated 또한 발생은 특정 개체의 레이아웃 속성으로 범위가 지정되지 않으며 개체가 포함된 전체 시각적 트리에 대해 보고합니다. LayoutUpdated 개체를 포함하는 전체 시각적 트리 내의 항목이 변경되었지만 처리기가 연결된 개체의 레이아웃 세부 정보(크기, 위치)는 변경되지 않았을 수 있습니다.
이 이벤트는 -related delegate 및 -derived 클래스를 RoutedEventArgs이벤트 데이터로 사용RoutedEventHandler하지만 이벤트는 실제로 라우트된 이벤트가 아닙니다. 개체 트리를 통해 버블되지 않습니다. 이벤트를 발생시키는 요소(즉, 보낸 사람)에서만 처리할 수 있습니다. OriginalSource 이 이벤트에 대한 이벤트 데이터가 항상 null 이므로 OriginalSource.
적용 대상
추가 정보
피드백
다음에 대한 사용자 의견 제출 및 보기