1

我有一个对象层次结构(对象A,B),每个对象都实现INotifyPropertyChanged了......

A 有 B 类型的成员,B 有 C 的成员,C 是 bool 类型

当 C 更改时,它的PropertyChanged事件被触发,但是这不会触发 B 的属性更改事件。因此 A 不会对 B 的变化做出反应。

有没有什么好的方法可以让这个冒泡?

4

2 回答 2

0

这太棒了——我得花更多时间看看它。谢谢你。

我找到了一个不同的解决方案,但它有点破解。我只是将绑定路径属性设置为嵌套类型。使用我上面的示例,在我的 xaml(它具有对象 A 的 DataContext)中,我将绑定设置为...

{绑定路径=BC}

将事件冒泡肯定更优雅。

于 2009-01-23T22:27:07.620 回答
0

这是一个相当简单的解决方案,但您不能只订阅 PropertyChanged 事件并传播调用吗?

例如

MyContainedObject.PropertyChanged += PropertyChangedHandler;

然后在你的处理程序中:

private void PropertyChangedHandler(object sender, PropertyChangedEventArgs e)
{
    this.OnPropertyChanged(e.PropertyName);
}

当您的对象具有同名的属性时,这非常有用。如果您有不同名称的属性,您将不得不做更多的工作来在属性值之间进行转换。

private void PropertyChangedHandler(object sender, PropertyChangedEventArgs e)
{
    switch(e.PropertyName)       
    {         
     case "Property1":   
        this.OnPropertyChanged("ADifferentProperty1");
        break;                  
     case "Property2":            
        this.OnPropertyChanged("ADifferentProperty2");
        break;                   
     default:            
        this.OnPropertyChanged(e.PropertyName);           
        break;      
   }
}
于 2012-06-17T13:51:10.317 回答