다음을 통해 공유


FrameworkElement.DataContextChanged 이벤트

정의

FrameworkElement.DataContext 속성의 값이 변경될 때 발생합니다.

// Register
event_token DataContextChanged(TypedEventHandler<FrameworkElement, DataContextChangedEventArgs const&> const& handler) const;

// Revoke with event_token
void DataContextChanged(event_token const* cookie) const;

// Revoke with event_revoker
FrameworkElement::DataContextChanged_revoker DataContextChanged(auto_revoke_t, TypedEventHandler<FrameworkElement, DataContextChangedEventArgs const&> const& handler) const;
public event TypedEventHandler<FrameworkElement,DataContextChangedEventArgs> DataContextChanged;
function onDataContextChanged(eventArgs) { /* Your code */ }
frameworkElement.addEventListener("datacontextchanged", onDataContextChanged);
frameworkElement.removeEventListener("datacontextchanged", onDataContextChanged);
- or -
frameworkElement.ondatacontextchanged = onDataContextChanged;
Public Custom Event DataContextChanged As TypedEventHandler(Of FrameworkElement, DataContextChangedEventArgs) 
<frameworkElement DataContextChanged="eventhandler"/>

이벤트 유형

설명

FrameworkElement.DataContext 속성에는 해당 값이 DataContext 값이 설정된 FrameworkElement의 모든 FrameworkElement 자식 요소에 상속되는 기본 제공 동작이 있습니다. 이 동작을 사용하면 관련 요소 집합이 동일한 컨텍스트를 사용하여 다른 원본 속성에 바인딩할 수 있습니다. 이는 항목 템플릿, 데이터 템플릿 및 기타 데이터 바인딩 시나리오에 특히 유용합니다. DataContext는 상속되므로 상속된 DataContext 값이 변경되었음을 감지하면 각 FrameworkElement가 상속된 값을 사용하여 부모 요소가 아닌 상속되는 요소에서 원본이 되는 다른 DataContextChanged 이벤트를 발생시킬 가능성이 있습니다. 이 동작을 원하지 않는 경우 부모 원본에서 DataContextChanged 이벤트를 처리해야 합니다. 여기서 이벤트가 먼저 발생합니다. 처리기 논리의 일부로 DataContextChangedEventArgs 이벤트 데이터의 Handled 속성 값을 true로 설정합니다. 이 작업을 수행하면 이벤트가 자식 요소로 라우팅되지 않습니다.

참고

DataContextChanged에는 라우팅 동작이 있지만 실제 라우트된 이벤트가 아닙니다( RoutedEvent 식별자가 없음). 또한 부모에서 자식으로 라우팅되는 반면, 실제 라우트된 이벤트는 자식에서 부모로 라우팅됩니다. WPF(Windows Presentation Foundation)에 익숙한 경우 DataContextChanged는 WPF(Windows Presentation Foundation) 이벤트 라우팅 정의에 의해 터널링 라우트된 이벤트로 간주될 수 있습니다.

DataContextChanged는 컨트롤 논리 또는 다른 코드 기반 논리가 바인딩에 대한 데이터 컨텍스트가 변경되었다는 알림을 원하는 시나리오에 유용합니다. 즉, 데이터 바인딩된 값이 변경되는 경우가 많습니다. 이는 컨텍스트 기반 변경을 만드는 코드를 실행하는 트리거로 유용할 수 있으며, 기존 바인딩에서 새 컨텍스트를 사용하여 값을 다시 계산할 수 있습니다. 또한 데이터 템플릿에서 기존 선언된 바인딩을 원하지 않지만 변경에 대한 알림이 필요한 경우에도 유용합니다. 이 시나리오에서는 데이터 바인딩 엔진을 통해 XAML 선언 바인딩이 동적으로 수행하는 것처럼 DataContextChanged를 처리하여 데이터 컨텍스트에 대한 변경 내용을 감지하고 코드의 다른 속성을 직접 변경할 수 있습니다. 예를 들어 데이터 템플릿 내에서 주로 사용하기 위한 사용자 지정 컨트롤이 있을 수 있으며, 앱 UI XAML 또는 데이터 템플릿에서 명시적 바인딩 선언 없이 컨트롤이 바인딩 작업을 수행할 수 있도록 할 수 있습니다.

적용 대상

추가 정보