【发布时间】:2016-02-12 15:14:57
【问题描述】:
我有一个带有多个 ViewModel 的 WPF 应用程序。其中一些 ViewModel 还具有其他 ViewModel 的 Observable 集合。我想使用单个对象(或对象列表)作为模型,并且我的应用程序中的所有 ViewModel 都需要访问它。最简单的方法可能是传递对每个视图模型的引用,但我认为这不是最好的方法。或者,我可以将模型声明为静态实例。这些解决方案似乎有点奇怪,也不优雅。我在想也许我可以使用 MVVM Light 并将我的模型在 SimpleIoc 中注册为:
SimpleIoc.Default.Register<myModel>();
然后每个模型都可以通过调用来访问这个实例:
var model = ServiceLocator.Current.GetInstance<myModel>();
这是一个好主意还是有更好的方法可以从每个 ViewModel 访问模型? ps:我不想使用依赖注入。对于我的小型应用程序来说,这太过分了。
【问题讨论】:
-
通常我会以某种方式设计视图模型,使它们中的每一个只代表完整数据模型的一小部分。然后,您可以将完整数据模型的所需子部分传递给相应的视图模型。但是单个视图模型不应该知道“所有数据”。
-
在这种情况下使用 IoC 听起来是一个非常合乎逻辑的解决方案。
-
您使用 IoC 的解决方案非常有效且很好
标签: wpf c#-4.0 design-patterns mvvm mvvm-light