2012-03-02 46 views
4

假設我有一個簡單的View來顯示一些文本。文本通過數據綁定的字符串屬性來自View的ViewModel。我希望能夠通過應用程序中的多個位置來設置ViewModel的字符串。如何訪問視圖的ViewModel

在我的應用程序的各個點上獲取ViewModel實例的最佳做法是什麼?

我可以使ViewModel單身,但這並不正確。

有什麼建議嗎?

回答

1

我認爲這有不同的概念。 每個人都有它的優點和缺點......

1.)如果你沒有視圖模型的構造函數中的參數,你可以使用Control,View,Page的DataContext屬性來綁定視圖模型。它旋轉了一個實例每個視圖...

2.)如果您有構造函數注入複雜或組合視圖模型...最好的方法將是基於服務定位模式的ViewModel定位模式。

http://johnpapa.net/simple-viewmodel-locator-for-mvvm-the-patients-have-left-the-asylum http://blog.roboblob.com/tag/viewmodellocator/

3)你必須首先也許想查看第一或視圖模型有關的東西就像一個視圖模型的婚姻...... http://wildermuth.com/2009/5/22/Which_came_first_the_View_or_the_Model

HTH

0

我想你要找的東西像一個Messenger在您的視圖模型可以註冊的消息來改變你的字符串屬性和其他組件可以通過信使發送消息。

另一種方法是PRISM事件聚合器,您可以在應該更改字符串屬性時訂閱事件。

編輯:其他但不好的方法是將您的viewmodel的實例給所有其他位置。但是你沒有更多的鬆耦合。

相關問題