2011-08-20 4 views
6

정의 된 모든 하위 바인딩에서 Binding.SourceUpdated를 수신하려고합니다.Binding.SourceUpdated를 루트 요소의 모든 자식에서 수신하는 방법?

http://msdn.microsoft.com/en-us/library/system.windows.data.binding.sourceupdated.aspx는 NotifyOnTargetUpdated 또는 바인딩에서 true로 NotifyOnSourceUpdated 특성 (또는 둘 다)를 설정

을 말한다. 이 이벤트를 청취하기 위해 제공 한 핸들러는 변경 사항을 알릴 요소에 직접 첨부해야하며 컨텍스트의 모든 내용이 변경되었음을 알고 싶으면 전체 데이터 컨텍스트에 직접 첨부해야합니다.

즉, Binding 요소 대신 DataContext 당 해당 이벤트를 수신 할 수 있어야합니다.

답변

8

대부분의 WPF 이벤트와 마찬가지로 SourceUpdatedRouted Event입니다. 자식 요소가이 이벤트를 발생 시키면 주어진 요소에 배치 된이 이벤트의 이벤트 핸들러도 호출됩니다.

다음과 같은 코드가있는 경우 :

<StackPanel Binding.SourceUpdated="OnBindingSourceUpdated"> 
    <TextBlock Text="{Binding Path=A, NotifyOnSourceUpdated=True}" /> 
    <TextBlock Text="{Binding Path=B, NotifyOnSourceUpdated=True}" /> 
</StackPanel> 

핸들러 OnBindingSourceUpdated 모두 텍스트 상자에 대한 바인딩 소스 변경을 처리합니다. 데이터 컨텍스트가 원래 정의 된 요소에 연결된 이벤트 처리기를 배치하면 모든 소스 변경에 대한 알림을 받게됩니다.

관련 문제