2011-05-18 34 views
0

從MVVM模式創建的WPF對話框中獲取值的最佳方式是什麼?我現在的代碼涉及獲取ViewModel並從中獲取適當變量的額外步驟。我想避免這一步,因爲它看起來有些無關緊要。如何使用MVVM從WPF對話框中獲取值

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

    addVehicle.ShowDialog(); 

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

回答

7

我通常這樣理解:

  1. 視圖模型希望顯示一個對話框構建CustomDialogViewModel的具體對話。它也可以用初始參數設置ViewModel。

  2. 該視圖提供了一個用於顯示對話框的界面。例如,如果我有一個CustomViewModel,CustomWindow將實現ICustomView,它被注入到CustomViewModel的構造函數中。 ICustomView將提供一種方法ShowCustomDialog(CustomDialogViewModel dialogViewModel)

  3. ViewModel在View界面上調用ShowDialog方法。當調用返回時,它可以使用DialogViewModel上的屬性來查看結果。

這可以使ViewModel與特定的View實現很好地分離,並允許您在單元測試時注入模擬IView。這使您可以編寫測試來檢測對話框是否已打開並具有相應的預期參數並提供結果。

相關問題