我试图弄清楚当绑定的中间层发生变化时如何触发 PropertyChangedEvent。我将从这里的一个例子开始:
public class MainViewModel :NotificationObject // Main DataContext
{
public SubViewModel SubVM{get; {_subVM = value; RaisePropertyChanged("SubVM");}} // observable property
public void DoChangeSubVM()
{
SubVM = new SubViewModel(); // doing this will not update the egControl
}
}
public class SubViewModel : NotificationObject
{
public Sub2ViewModel Sub2VM {get; set{_sub2VM = value; RaisePropertyChanged("Sub2VM");}} // observable property
}
public class Sub2ViewModel : NotificationObject
{
public int SomeProp {get; set {_someProp = value; RaisePropertyChanged("SomeProp");} // observable property
}
在 XAML 中:
<EgControl name="egControl" Content={Binding SubVM.Sub2VM.SomeProp} />
现在,如果我更改 Sub2VM 属性,egControl 不会自动更新为新 Sub2VM 实例的 SomeProp 值。有人如何实现这一点,而无需手动从 Sub2VM 属性设置器中引发所有 Sub2ViewModel propertychanged 事件?
使用:棱镜 .NET 4.0