2012-03-02 63 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的实例给所有其他位置。但是你没有更多的松耦合。