当发生某些WPF数据绑定更新时,是否有任何获取事件的方法?

时间:2011-03-01 15:48:00

标签: c# .net wpf

当发生某些WPF数据绑定更新时,是否有任何获取事件的方法?

UPD我正在开发一种扩展标准控件之一的自定义控件。我需要获取通知,当祖先控件的DataContext属性发生更改时,或者数据绑定导致更新祖先控件的任何属性。

3 个答案:

答案 0 :(得分:4)

听起来您需要:INotifyPropertyChanged在View模型上实现。这显然取决于您的实现,但这是假设您已经遵循MVVM。

然后,这允许您根据绑定属性更改的值(以及正在引发的事件)执行一些工作。

答案 1 :(得分:2)

如果您正在讨论从控件角度获取通知(即绑定了依赖项属性时),您可以提供一个将传递值的方法:

public DependencyProperty ItemsSourceProperty = DependencyProperty.Register(
                "ItemsSource",
                typeof(IList),
                typeof(CustomGridControl),
                new FrameworkPropertyMetadata(null, OnItemsSourceChanged));

private static void OnItemsSourceChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
    e.NewValue;
}

答案 2 :(得分:2)

  • 正如其他人已经提到的,如果你的对象 实现INotifyPropertyChanged和 该属性支持它,注册到PropertyChanged,您将被告知有关更改。
  • 如果您在DependencyObject中并添加自己的DependencyProperty,请在元数据中注册DependencyPropertyChangedEventHandler,以便在属性更改时通知 -
  • 如果您有DependencyObject和 该属性是DependencyProperty,您可以覆盖 OnPropertyChanged。它会被调用 每次都是DependencyProperty 价值已经改变。然后,您可以过滤掉您感兴趣的属性更改。
  • 如果你不在 DependencyObject并希望 听一下DepenendencyProperty的改变值,你可以使用 DependencyPropertyDescriptor注册value changes。但请注意,使用它可能会产生memory-leaks