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