2015-10-21 38 views
2

爲了簡便起見,我想實現C#/ XAML/WinRT的以下結構:全局狀態對象/ WinRT的

Global App State -> Bindings -> Pages/User Controls etc -| 
     ^            | 
     |------------- update -----------------------------| 

所以基本上,FP /無功時尚。頁面和用戶界面綁定到全局狀態對象的屬性,並且每當視圖想要更新某些內容時,它就會直接更改全局應用程序狀態(或通過視圖模型類,無論如何),立即更新應用程序的所有其他依賴部分(通過綁定)。

我知道關於DependencyPropertiesINotifyPropertyChanged,所以綁定到屬性應該不成問題。

但是,理想情況下,即使我完全替換全局狀態對象,我也希望發生這種情況。比方說,它是一個多用戶的應用程序,那麼我想切換用戶是這樣的:

App.State = LoadStateForUser(...); 

,並綁定到全局狀態更新用戶界面的一部分。現在我必須自己設置每個不同的屬性。這可能以某種方式嗎?

請注意,我不會問關於MVC或MVVM或任何其他設計模式的建議。

回答

0

你可以做到這一點,但它肯定不會是自動的。

我會在App(或GloablStateService,或其他)表示全球狀態發生變化(GlobalStateChanged似乎是合理的)的事件。

然後,您的視圖模型將訂閱此事件,當您通過上面顯示的設置器引發時,請提出正確的PropertyChanged事件,以便UI更新。如果你的viewmodel的主要綁定屬性是對全局狀態對象的簡單引用,那麼這應該只是一個事件引發。