【发布时间】:2014-12-10 22:22:44
【问题描述】:
我目前正在为我正在开发的游戏设置一个简单编辑器的结构。这个编辑器基本上会加载/保存一个序列化文件,然后游戏使用它来做任何它想做的事情。
我将此序列化文件视为数据库,因为它包含多个视图不断使用的数据,可能同时使用。由于这种想法,我想将所有这些数据(对象列表、字符串、整数等)放在一个集中位置,所有视图都可以读取、更新、添加等等。
我的第一个想法是使用一个引用反序列化数据的单例类,然后相应地对其进行数据绑定,以便所有打开的视图在任何时间发生变化时都会收到通知。
但我想知道,WPF 是否希望您解决这个问题,而不是(直接)绑定到单例、静态数据或代理属性(数据上下文中的属性,它只从单例返回数据) ?或者这只是要走的路?
【问题讨论】:
-
您的 ViewModel 是在哪里设置的?您可以创建一个模型(静态数据)并将引用传递给每个 ViewModel,然后将其绑定到单独的 View。 .. public MyVm(模型模型) { .. }
-
这可以工作,最后它和单例一样,只是为每个 ViewModel 多写几行代码(存储传入的引用),但话又说回来:这是如何WPF 会希望你这样做吗?
-
是的,对于每个 MVVM,ViewModels 通常被注入到关联的 ViewModels 中。你甚至可以使用依赖注入来做到这一点。
-
所以我基本上为我的序列化数据制作了一个 ViewModel 并将其传递给需要它的视图,太酷了!你会碰巧有一些例子,文章,任何东西。特别是依赖注入听起来很有趣。
-
我可以为你快速写一篇文章。我会在答案中发布它
标签: c# wpf data-binding