我遇到以下情况:

我有2个 View 模型和一个 View ,其中包含2个用户控件,这些 View 模型将绑定(bind)到该用户控件。第一个VM是搜索功能,它返回人员列表,第二个VM是每个人的更详细说明。

我要执行以下操作:

public CompositeVM
{
     public SearchVM SearchViewModel{get;set;}
     public DescriptionVM DescriptionViewModel{get;set;}
}

就像我说过的那样,搜索 View 模型还包含一个找到的人员列表,因此我希望当我选择一个人员时,DescriptionVM将相应地进行更新。

如何在虚拟机之间实现这种通信?当所选列表项发生更改时(我耦合度很高),我是否应该在SearchVM上设置SelectedPerson属性并将其传递给DescriptionVM?有没有更简单的方法来解决这个问题?

最佳答案

CompositeVM可以订阅SearchViewModelPropertyChanged事件并设置DescriptionViewModel.SetSelectedPerson(SearchViewModel.SelectedPerson)
SearchVMDescriptionVM之间没有耦合,因为它们彼此之间不认识。 CompositeVM既了解他们,又负责他们的交互。

08-17 21:29