【发布时间】:2011-11-13 17:43:12
【问题描述】:
我开始探索 MVVM 灯并开始设计我的不同 viemModels。我已经浏览了很长时间以找出我正在寻找的东西,但我无法得到它:-(。
我的一个示例基于单个 MainViewModel,它在 ModelViewLocator 内处理。在大多数情况下,我们将拥有多个视图模型,因此应该在单个 ViewModelLocator 文件中定义所有视图模型,还是每个视图都必须有一个 ViewModelLocator?
换句话说,我需要得到这个: MainViewModel -> MainViewModelLocator PictureViewModel -> PictureViewModelLocator
好的,但还有一个问题: 假设我有 3 个视图模型,我创建为 ViewModel1、2 和 3 在 ViewModelLocation 中,我创建了与 MainViewModel 相同的结构以创建它的实例,并创建了一个主要属性来访问 Models 实例。
我发现的问题是,如果与每个 viewModels 对应的每个 View 都设置为 ViewModelLocator.ViewModelx 自己的数据上下文,则视图实例是在设计时创建的,如果在我的视图的构造函数期间,它会给我带来麻烦我需要调用一个从 WCF 服务获取数据的外部类。它会生成“实例创建错误”。
另一方面,如果我在每个视图中绑定,则不是从 ViewModelLocator.ViewModelx 而是直接从 ViewModelx 绑定,那么我不会收到该错误并且工作得更好。
那么正确的做法和逻辑路径是什么:
1 - MainViewModel 应该创建所有其他 viewModel 吗? 2 - 每个视图是否必须绑定到它自己在 ViewModelLocator 中的 MainStatic 属性? 3 - 每个视图是否创建自己的 ViewModel 实例?
我的做法是,在创建 ViewModel 构造函数期间从外部类返回服务数据的 View 只有在我将其直接绑定到 ViewModel 时才有效,这样做有麻烦吗?
【问题讨论】: