【发布时间】:2025-12-08 01:10:01
【问题描述】:
假设我有一个显示一些文本的简单视图。文本通过数据绑定的字符串属性来自视图的 ViewModel。我希望能够通过应用程序中的多个位置设置 ViewModel 的字符串。
在我的应用程序的各个点获取 ViewModel 实例的最佳做法是什么?
我可以将 ViewModel 设为单例,但感觉不对。
有什么建议吗?
【问题讨论】:
假设我有一个显示一些文本的简单视图。文本通过数据绑定的字符串属性来自视图的 ViewModel。我希望能够通过应用程序中的多个位置设置 ViewModel 的字符串。
在我的应用程序的各个点获取 ViewModel 实例的最佳做法是什么?
我可以将 ViewModel 设为单例,但感觉不对。
有什么建议吗?
【问题讨论】:
我认为对此有不同的概念。 各有优缺点......
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
【讨论】: