情况:
我有一个UserControl(称之为UCA),它的DataContext绑定到ViewModel(称之为VMA)。 UserControl(UCA)嵌套了另一个UserControl(称之为UCB),我有一个名为VMB的UCB ViewModel。
父ViewModel(VMA)具有实例化VMB的属性,其中UCB的DataContext设置为VMB。
当控制的值(TextBox)在绑定到VMB的UCB中发生更改时,会通知它(OnPropertyChanged)。现在,我需要在VMB中进行更改以通知“父”VMA,以便父VMA可以在UCA中完成一些工作并更新控件。
所以我在ViewModel方面,在我的VMB OnPropertyChanged方法中,我试图弄清楚如何将这些数据更改为VMA。有什么建议?提示?
谢谢,Rob。
答案 0 :(得分:0)
VMA是否拥有VMB?在VMA中注册活动
public VMA()
{
VMB.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(PropertyChanged);
}
void PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
if (e.PropertyName == "MyProperty")
{
//TODO: Stuff
}
}
如果VMB实现了INotifyProeprtyChanged,那么这个shold工作。