2011-08-20 31 views
6

Tôi muốn nghe Binding.SourceUpdated trên tất cả các liên kết con được xác định.Làm thế nào để nghe Binding.SourceUpdated trên tất cả các trẻ em của một phần tử gốc?

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

Đặt NotifyOnTargetUpdated hoặc tài sản NotifyOnSourceUpdated (hoặc cả hai) là true trong ràng buộc. Trình xử lý mà bạn cung cấp để lắng nghe sự kiện này phải được đính kèm trực tiếp vào phần tử mà bạn muốn được thông báo về các thay đổi hoặc ngữ cảnh dữ liệu tổng thể nếu bạn muốn biết rằng mọi thứ trong ngữ cảnh đã thay đổi.

Điều đó có nghĩa là chúng tôi có thể nghe những sự kiện đó trên mỗi DataContext thay vì mỗi phần tử Binding.

Trả lời

8

Giống như hầu hết các sự kiện WPF, SourceUpdatedRouted Event. Bất kỳ trình xử lý sự kiện nào cho sự kiện này được đặt trên một phần tử đã cho cũng sẽ được gọi khi một phần tử con làm tăng sự kiện này.

Nếu bạn có đoạn mã sau:

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

Việc xử lý OnBindingSourceUpdated sẽ xử lý thay đổi nguồn ràng buộc cho cả textbox. Đặt trình xử lý sự kiện được đính kèm trên phần tử nơi ngữ cảnh dữ liệu được xác định ban đầu và bạn sẽ nhận được thông báo cho mọi thay đổi nguồn.

Các vấn đề liên quan