這是關於MVVM模式最佳實踐的特定問題。我正在使用MvvmLight庫。 它是這樣的: 我的模型,比如說「飛行」,實現了一些業務邏輯,可以通過方法啓動,暫停和停止航班。每種方法都有自己的邏輯,無論是在停止還是暫停飛行,都會發揮功能。變化的一個重要變量是指示航班狀態的狀態枚舉 - 播放,停止或暫停。如上所述,狀態變量(和屬性)在模型中定義。 另一方面,飛行類由包含狀態屬性的ViewModel類包裹,該狀態屬性將狀態變量包裹在飛行模型中,並且連接到飛行模型的RelayCommands也會播放停止暫停方法。MVVM:模型狀態改變時通知視圖
這裏的問題開始於: 當我通過視圖執行其中一個命令時,它執行模型中的方法,以便狀態變量本身直接改變,但它只在模型中改變。 ViewModel並不知道包裝變量是否已被更改,因爲它已被直接更改......這意味着如果某些視圖元素綁定到狀態屬性,則在執行命令時它不會更改。
I知道幾種方法來解決這個問題,但我要求一個公平的解決方案,不會打破MVVM模式(如在模型中的飛行類中使用INotifyPropertyChanged)
如果模型無法更改會發生什麼,例如如果拋出異常? – Jon
比ViewModel失敗,你認爲這是一個問題嗎? –
我不確定「ViewModel失敗」是什麼意思。我按Play,VM狀態改變爲「正在播放」,調用Model.Play(),然後拋出。 VM現在的狀態是什麼? – Jon