2016-04-29 63 views
0

我想在视图模型中发生某些情况时在视图中执行某些代码。我已经调查棱镜事件聚合但我还没有得到与棱镜5.成功如果没有这样做,这将是helpful.Any博客或关于相同的代码也将工作如何从视图模型进行通信以在WPF中的MVVM中查看

+0

请看看该条目:http://stackoverflow.com/questions/15439841/mvvm-in-wpf-how-to-alert-viewmodel-of-changes -in-model-or-should-i?rq = 1 – Ugur

+2

INotifyPropertyChanged是要走的路。或定期举办活动。在视图中,添加一个DataContextChanged处理程序。当你获得datacontext时,将其转换为你的viewmodel类型并为PropertyChanged或其他类型添加处理程序。 –

回答

2

爱德宾吉说更简单的方法,所要做的就是在你的视图中监听DataContextChanged,因为View是连接到ViewModels的。

下面是一个例子:

public partial class MyView : UserControl 
{ 
    public MyView() 
    { 
     DataContextChanged += MyView_DataContextChanged; 
    } 

    private void MyView_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e) 
    { 
     //new ViewModel has been set. 
     MyViewModel myViewModel = e.NewValue as MyViewModel; 
     if (myViewModel != null) 
     { 
      //check for property changes 
      myViewModel.PropertyChanged += MyViewModel_PropertyChanged; 

      //custom event for specific update 
      myViewModel.MyCustomEventTriggered += MyViewModel_MyCustomEventTriggered 
     } 
    } 

    private void MyViewModel_PropertyChanged(object sender, PropertyChangedEventArgs e) 
    { 
     //do your logic 
    } 

    private void MyViewModel_MyCustomEventTriggered(object sender, MyCustomEventArgs e) 
    { 
     //do your logic 
    } 
} 
相关问题