这是一个基本问题,但我认为尽管绑定了很多属性,但我之前并没有这样做。我原本打算将一个名为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。不,那也需要我有一个依赖项属性被更改的事件参数。
需要注意的是可以提高的属性与'null',如果你想说,所有属性值可能已经更改的属性名称更改。如果某些内容影响大量属性,并且您希望在应用所有更改后发送单个通知,而不是在每次部分更改时沿途逐渐通知,则这很有用。 –