2011-11-16 112 views
0

我有一些用三個ViewModel編寫的應該被重構的通用代碼。我已經在app.xaml.cs的一個方法中移動了代碼。這是一個正確的方法嗎?現在我必須從ViewModels調用這個方法,是否應該引發一個自定義事件(來自所有ViewModel)並在app.xaml.cs中處理它?如果是這意味着我必須在app.xaml.cs頁面上創建ViewModels的引用(我們正在使用Unity)。 這看起來正確嗎?我是MVVM的新手,還有其他建議嗎?從ViewModel調用app.xaml.cs中的方法

任何幫助將不勝感激。

+0

什麼是通用代碼負責..? –

+1

因此,您將通用代碼從您的ViewModel移動到視圖的代碼隱藏? – Will

回答

0

任何時候當你有「交叉切割」的挑戰,例如2個完全獨立的對象需要溝通的地方,事件風格(發佈者/訂閱者)模式運行良好。

如果您使用的是Unity,請使用EventAggregator。

通過這種方式,您可以簡單地從虛擬機發布事件並讓app.xaml.cs監聽事件。

這樣你就不必讓虛擬機知道app.xaml.cs.

+0

我們做了類似的事情,在兩個VM完成Web服務調用後,我們引發由app.xaml.cs處理的事件來執行相同的功能。 – Gaurav

5

您還沒有提到什麼的代碼是。它爲什麼在App.xaml.cs文件中?
,你需要從三個不同的ViewModels稱,就表明你應該重構它到事實之一:

  • 一個靜態輔助型類
  • 一個基類,您ViewModelss從
繼承

ViewModel的工作是保存並整形(或變換)可供顯示的數據,但它不應該知道顯示。也不應該知道App.xaml.cs的內容,特別是當您的ViewModel最終可能處於與App.xaml文件完全不同的模塊或程序集中時。

相關問題