我有一个对象层次结构(对象A,B),每个对象实现INotifyPropertyChanged
,以便...... {/ p>
A有B类成员, B有C成员,C是bool类型
当C更改时,其PropertyChanged
事件会被触发,但这不会触发B的属性更改事件。因此A对B的变化没有反应。
有没有一个很好的方法来搞砸它?
答案 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;
}
}