C# WPF&;MVVM-如何在多个viewmodels中共享一个模型

C# WPF&;MVVM-如何在多个viewmodels中共享一个模型,c#,wpf,mvvm,model,viewmodel,C#,Wpf,Mvvm,Model,Viewmodel,我目前正在使用WPF和MVVM设计模式开发一个应用程序。我正在尝试做以下事情: 我想要两个模型,父母和孩子。父类有多个子类的对象,每个子类共享一个父对象 然后,我想创建两个视图模型,父视图模型和子视图模型。我还想让父视图模型有一个父模型,并将子模型从父模型分配给每个子视图模型 我能想到的一个解决方案是让父视图模型拥有子视图模型,并将子模型分发到父视图模型中的每个子视图模型 但是,我不想让父视图模型拥有子视图模型,因为父视图模型和子视图模型之间的关系已经在模型中创建。如果这样做,还必须为视图模型形

我目前正在使用WPF和MVVM设计模式开发一个应用程序。我正在尝试做以下事情:

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

然后,我想创建两个视图模型,父视图模型和子视图模型。我还想让父视图模型有一个父模型,并将子模型从父模型分配给每个子视图模型

我能想到的一个解决方案是让父视图模型拥有子视图模型,并将子模型分发到父视图模型中的每个子视图模型

但是,我不想让父视图模型拥有子视图模型,因为父视图模型和子视图模型之间的关系已经在模型中创建。如果这样做,还必须为视图模型形成相同的关系

因此,我希望与子视图模型和父视图模型共享一个父模型,而不让父视图模型拥有子视图模型


你们能给这个问题提供解决办法吗?谢谢。

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

  • 我注册了名为“ChildModels”的定制属性,它绑定了ObservableCollection
  • 我创建了名为“OnChildModelPropertyChanged”的行为,并在父视图模型中给出子模型时触发它
  • 在OnChildModelPropertyChanged方法中,我创建了与子模型数量相同的子视图模型,并为每个子视图模型提供了一个子模型
  • 这创建了父模型和子模型之间的关系,而不让父视图模型和子视图模型相互了解
  • 我的解释对你来说可能听起来很糟糕。但这几乎是我所做的全部


    再次感谢您的回答,祝您有一个美好的编码生活

    模型不应该了解视图模型。在我的例子中,我有一个ParentViewModel,它有一个ParentModel,我将创建一个ChildModel并将其添加到ParentModel,然后将ChildModel添加到ChildViewModel,然后将ChildViewModel添加到ParentViewModel。这需要做很多工作,但可以说是“纯粹的”。