Silverlight 5 MVVM:如何从子视图模型触发事件到父ViewModel? (用户控制)

时间:2012-11-02 21:24:10

标签: silverlight mvvm

情况:

我有一个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。

1 个答案:

答案 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工作。