2017-04-27 12 views
0

CommitEdit()を呼び出す必要があるTelerik RadGridViewがあります。現在、私はviewmodelから次のコードを呼び出しています。xamlで定義された要素からビューモデルを分離する方法

((MainWindow)Application.Current.MainWindow).Container.View.RadGrid.CommitEdit(); 

しかし、これで私がビューモデルを単体テストできないことが判明しました。このような場合、ビューモデルをビューから切り離すにはどうすればよいですか?

答えて

0

"UI"固有の機能をViewModelから切り離すには、編集をコミットする必要があるときに呼び出すイベントをViewModelに追加します。以下のような何か:

public ViewModel : IViewModel 
{ 
    public event Action CommitEdit; 
} 

が、その後、背後にあるコードの中で、そのイベントをサブスクライブ:今すぐ

private void OnWindowLoaded(object sender, RoutedEventArgs e) 
{ 
    var dataContext = DataContext as IViewModel; 
    if (dataContext != null) 
    { 
     dataContext.CommitEdit += (()=>{ Container.View.RadGrid.CommitEdit(); }) 
    } 
} 

あなたはユニットテストを行うとき、あなたはRadGridに依存することなく、直接ちょうどユニットテストのViewModelすることができます。これにより、イベントActionが呼び出されたかどうかを調べるためのテストが可能になります。

関連する問題