如何让PropertyChanged事件冒出来?

时间:2009-01-23 20:06:27

标签: silverlight inotifypropertychanged

我有一个对象层次结构(对象A,B),每个对象实现INotifyPropertyChanged,以便...... {/ p>

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

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

有没有一个很好的方法来搞砸它?

2 个答案:

答案 0 :(得分:0)

这很棒 - 我不得不花更多的时间来看待它。谢谢。

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

{Binding Path = B.C}

冒泡活动肯定更优雅。

答案 1 :(得分:0)

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

E.G。

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;      
   }
}