2016-04-29 7 views
0

ビューモデルで何かが発生した場合、特定のコードをビューで実行したいと思います。私はプリズムイベントアグリゲータに見てきましたが、私はエド・プランケットが言うように、それはhelpful.AnyのブログやもWPVMの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

に動作します。このに関して同じコードになりますそうするために、より容易な方法がある場合は、プリズム5と成功を得たhaventはViewのViewModelへの接続方法であるため、ビュー内のDataContextChangedをリッスンする必要があります。ここで

は例です:

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 
    } 
} 
関連する問題