2013-05-28 35 views
0

我是新手。 我正在嘗試使用MVVM構建WPF應用程序。到目前爲止,我已將視圖模型屬性綁定到了我的視圖中。很乾淨,很好。沒有代碼。如何從分隔符類方法引用viewmodel屬性

我的業務邏輯是基於用戶輸入啓動一個或多個批處理過程。後臺進程將依次更新視圖的進度條和/或文本塊的狀態。

我的問題是 什麼是最MVVM的方式來做到這一點? 我應該把批處理代碼直接放在我的viewmodel類中嗎?如果是,我的viewmodel類看起來很大(數千行)

或者我應該在BusinessLogic文件夾(層)中創建一個單獨的類以容納批處理邏輯?如果是的話,我如何才能在業務邏輯類中引用輸入/輸出的視圖模型(UI)屬性?只需將這些屬性作爲參數傳遞給業務邏輯類/方法即可?如果是這樣,它看起來像我必須通過許多屬性作爲參數。這是常見的MVVM方式嗎?

請指導我在正確的方向。 謝謝,

回答

0

處理邏輯不應該進入視圖模型,但視圖模型將「知道」如何啓動進程,可能通過實例化某個組件並調用其上的方法,傳遞任何參數用戶界面中指定的用戶。

執行處理的組件可以發出狀態事件(消息,完成百分比或兩者)。視圖模型可以訂閱這些事件(並且在處理完成時取消訂閱),並相應地更新其屬性。

例如,可能有這樣的視圖模型屬性:

public string StatusMessage 
{ 
    get { return _statusMessage; } 
    set 
    { 
     _statusMessage = value; 
     RaisePropertyChanged("StatusMessage"); // you need to implement INotifyPropertyChanged 
    } 
} 

你的組件,其確實的處理可發射以10%的完井層段的事件和在發生錯誤的情況下的另一事件。您可以在視圖模型中訂閱這些事件,並將StatusMessage屬性設置爲諸如「處理 - 完成30%」或「由於超時而處理失敗」之類的內容。

相關問題