2013-04-20 30 views
0

我創建了一個名爲JsData的類,並在App.xaml.cs中實例化它,以便可以從多個視圖模型訪問它。 JsData有幾個ObservableCollections,一些用於配置的屬性和一些操縱從遠程服務器自動提取數據的過程的方法。Silverlight:綁定到跨視圖模型共享的數據

現在出現這個問題。使用最少的編碼將全局數據綁定到我的視圖對我來說很方便嗎?此外,我正在使用Caliburn.Micro。使用消息傳送將PropertyChanged事件通知給視圖模型是否可行和適當?

回答

0

我認爲最好的方法是創建一個視圖模型可以實現的服務。這樣,需要數據的視圖模型可以實現服務,並且服務更加靈活,因爲它可以注入視圖模型構造中。這使您的視圖模型更加分離並且尊重mvvm模式。

我不會使用消息傳遞來通知更改,這會產生不必要的開銷。您只需讓視圖模型實現inotifypropertychanged,然後在構造函數中獲取服務然後將服務值傳遞給視圖模型中引發屬性更改事件的屬性。

如果您需要幫助定義服務只是讓我知道,我會發布樣本

+0

真正的消息是有點開銷。但是我想使用全局數據存儲庫的原因是,在我的場景中,要處理的數據不是很小,而且在我的場景中進行數據刷新迭代實際需要很長時間。順便說一下,這是一個問題,直到現在我還沒有找到任何解決方案 - 我必須橋接現有的JavaScript庫(同步),即從SL調用JS。我試圖從SL中或者從SL中異步地包裝它,但是結果是徒勞。它實際上是ajax,但是整個JS是基於同步的(直到它返回)。這就是我所擁有的。 – 2013-04-20 21:02:34

+0

因此,總之,如果根視圖模型負責管理整個應用程序共享的數據存儲庫,那麼我認爲它可能不那麼耗時且更實惠。 – 2013-04-20 21:04:52