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

时间:2011-05-18 18:53:13

标签: wpf mvvm modal-dialog

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

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

   addVehicle.ShowDialog();

   AddResultsSeriesViewModel tempViewModel = (AddResultsSeriesViewModel)addVehicle.DataContext;
   PlotVariables.Add(tempViewModel.NewSelectedVariable);
}

1 个答案:

答案 0 :(得分:7)

我通常这样做:

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

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

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

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