2015-02-24 95 views
0

我目前正在使用WPF和MVVM设计模式开发应用程序。我试图做以下事情:WPF和MVVM - 如何在多个视图模型中共享一个模型

我想有两个模型,父母和孩子。父类有多个子类对象,每个子类共享一个父对象。

然后,我想创建两个视图模型,父视图模型和子视图模型。此外,我想让父视图模型具有父模型,并将子模型分配给父模型中的每个子视图模型。

我能想到的一种解决方案是让父视图模型具有子视图模型并将子模型分发给父视图模型内的每个子视图模型。

但是,我不想让父视图模型具有子视图模型,因为父模型和子模型之间的关系已经创建。如果你这样做,你也必须为视图模型建立同样的关系。

所以,我想共享一个父模型与子视图模型和父视图模型,而不让父视图模型具有子视图模型。

请问大家对这个问题有什么解决办法?谢谢。

+0

模型应该没有视图模型的知识。在我的情况下,我有一个ParentViewModel,它有一个ParentModel,我将创建一个ChildModel并将其添加到ParentModel,并将ChildModel添加到ChildViewModel,然后将ChildViewModel添加到ParentViewModel。它会变得很多工作,但可以这么说“纯”。 – Kcvin 2015-02-25 07:04:30

回答

0

谢谢你回答我的问题。我解决了这个问题,使用父视图的附加行为。这是我做的。

  1. 我注册了一个名为“ChildModels”的自定义属性,它绑定了ObservableCollection。
  2. 我创建了名为“OnChildModelsPropertyChanged”的行为,并在从父视图模型给出子模型时触发它。
  3. 在OnChildModelsPropertyChanged方法,我创建了相同数量的子视图模型作为儿童模特,给了一个子模型每个孩子视图模型
  4. 这创造了父模型和子模型之间的关系,而不让父母视图模型和子视图模型彼此了解。

我的解释听起来可能对你很不好。但这几乎是我所做的。

再次感谢您的回答,并有一个不错的编码生活!