2017-04-27 15 views
0

我有一个Telerik RadGridView,需要调用CommitEdit()。目前我使用viewmodel中的以下代码调用它。如何将视图模型与xaml中定义的元素分开

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

但我发现这可以防止我能够单元测试视图模型。在这种情况下,我怎样才能将视图模型从视图中分离出来?

回答

0

为了从ViewModel中分离出“UI”特定的功能,你可以做的是向你的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控件。这将允许测试以查看事件Action是否被调用。

相关问题