バインディングの中間層が変更されたときに 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 イベントを手動で発生させることなく、これを達成するにはどうすればよいでしょうか?
使用: Prism .NET 4.0