如何从MVVM的WPF对话框中获取值

PlT*_*lor 0 wpf modal-dialog mvvm

从使用MVVM模式创建的WPF对话框中获取值的最佳方法是什么.我当前的代码涉及获取ViewModel并从中获取适当变量的额外步骤.我想避免这一步,因为它似乎有些无关紧要.

private void OpenDataSeriesWindow()
{
   var addVehicle = new AddResultsSeries();

   addVehicle.ShowDialog();

   AddResultsSeriesViewModel tempViewModel = (AddResultsSeriesViewModel)addVehicle.DataContext;
   PlotVariables.Add(tempViewModel.NewSelectedVariable);
}
Run Code Online (Sandbox Code Playgroud)

Dan*_*ant 7

我通常这样做:

  1. 想要显示对话框的ViewModel为特定对话框构造CustomDialogViewModel.它还可以使用初始参数设置ViewModel.

  2. View提供了一个显示对话框的界面.例如,如果我有一个CustomViewModel,CustomWindow将实现ICustomView,它被注入到CustomViewModel的构造函数中.ICustomView将提供一种方法ShowCustomDialog(CustomDialogViewModel dialogViewModel).

  3. ViewModel在View界面上调用ShowDialog方法.当调用返回时,它可以使用DialogViewModel上的属性来查看结果.

这使得ViewModel与特定的View实现很好地分离,并允许您在单元测试时注入模拟IView.这允许您编写测试,以检测已使用预期参数打开对话框并相应地提供结果.