如何在根元素的所有子元素上监听Binding.SourceUpdated?

时间:2011-08-20 15:46:08

标签: wpf data-binding

我想在定义的所有子绑定上听Binding.SourceUpdated。

http://msdn.microsoft.com/en-us/library/system.windows.data.binding.sourceupdated.aspx

  

在绑定中将NotifyOnTargetUpdated或NotifyOnSourceUpdated属性(或两者)设置为true。您提供的用于侦听此事件的处理程序必须直接附加到要通知更改的元素,或者如果您想要了解上下文中的任何内容已更改,则必须附加到整个数据上下文。

这意味着我们应该能够根据DataContext而不是每个Binding元素来监听这些事件。

1 个答案:

答案 0 :(得分:8)

与大多数WPF活动一样,SourceUpdatedRouted Event。当子元素引发此事件时,也将调用放置在给定元素上的此事件的任何事件处理程序。

如果您有以下代码:

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

处理程序OnBindingSourceUpdated将处理两个文本框的绑定源更改。将附加的事件处理程序放在最初定义数据上下文的元素上,您将收到每个源更改的通知。