C# 如何在子属性更改时为属性提供更改通知?

C# 如何在子属性更改时为属性提供更改通知?,c#,wpf,binding,C#,Wpf,Binding,这是一个如此基本的问题,但我认为我以前没有做过,尽管我已经绑定了这么多属性。我最初计划将一个名为TimeScale的类绑定到各种对象。 在类A中,我们有一个依赖属性,我想调用它作为更改通知。但是,更改通知不是通过此类手动完成的 public TimeScale AxisTimeScale { get { return (TimeScale)GetValue(AxisTimeScaleProperty); } set { SetValue(AxisTimeScaleProperty

这是一个如此基本的问题,但我认为我以前没有做过,尽管我已经绑定了这么多属性。我最初计划将一个名为TimeScale的类绑定到各种对象。
在类A中,我们有一个依赖属性,我想调用它作为更改通知。但是,更改通知不是通过此类手动完成的

public TimeScale AxisTimeScale
{
    get { return (TimeScale)GetValue(AxisTimeScaleProperty); }
    set { SetValue(AxisTimeScaleProperty, value); }
}

public static readonly DependencyProperty AxisTimeScaleProperty =
    DependencyProperty.Register("AxisTimeScale",
        typeof(TimeScale), typeof(SignalPanel),
        new FrameworkPropertyMetadata(new TimeScale()));
这绑定到源类B

private class B
{
    private TimeScale _GraphTimeScale;

    public TimeScale GraphTimeScale
    {
        get { return _GraphTimeScale; }
        set
        {
            if (value != _GraphTimeScale)
            {
                _GraphTimeScale = value;
                OnPropertyChanged("GraphTimeScale");
            }
        }
    }
}
再看一遍,我想我真正想要的是在依赖属性上调用propertychanged,但是由于我没有实现Inotifypropertychanged,我想知道我是如何做到的

我认为DependencyObject已经实现Inotifypropertychanged,因此我有权访问:

OnPropertyChanged(new DependencyPropertyChangedEventArgs(property, old value, new value));

但是,在旧值和新值槽中插入相同的对象会导致PropertyChanged事件不触发(我假设实现在触发事件之前检查这两个值是否相同)。我希望尽可能避免创建新对象。我想一个选择是覆盖OnPropertyChanged。不,这也要求我拥有一个依赖项propertychanged事件args。

订阅
propertychanged
通知
NumberOfUnits
,然后在属性更改事件处理程序中引发
OnPropertyChanged(“GraphTimeScale”)

如果有更好的方法,我会很感兴趣。

更新

OnPropertyChanged("TimeScale");

或者

您可以将
时间刻度
类包装为
可观察对象
,以便订阅对象更改事件并从中引发它们


更多信息:

请注意,如果您想说所有属性值都可能已更改,则可以使用
null
作为属性名称来引发属性更改。如果某些内容影响了大量属性,并且您希望在应用所有更改后发送一个通知,而不是在每次部分更改的过程中以增量方式发送通知,则此功能非常有用。我想我的问题中没有足够的数据。我要试着修改一下
OnPropertyChanged("GraphTimeScale");