【发布时间】:2015-01-27 13:06:39
【问题描述】:
所以我有一个 ViewModel,它包含从列表中选择一个人的逻辑,如果要选择的人不在列表中,则列表项会打开一个新对话以创建所述人。
我的问题是:如何在子视图模型中创建人并在父视图模型中获取它。我搜索(很多)并没有发现任何令人满意的东西。 据我所知,至少有三种可能: 1. 使用 CMs EventAggregator 将消息发送给 Parent(以及其他所有收听者) 2. 在子 VM 上使用一个属性,并在 WindowManger 关闭 Dialogue 后访问它。 3.实现IResult
我已经做了第一个,但这(如前所述)并不令人满意。我不希望每个人都得到结果,只是因为他听了 EventAggregator。第二个(在我看来)不是很像 MVVM(或者是吗?),因为如果它是异步的,我无法控制它。
据我从 CMs 文档中可以看出,第三种选择是首选方式。但是我没有找到解释如何使其适应我的解决方案。
我必须获得用户输入,而这在 Execute(CoroutineExecutionContext context) 方法中是不可能的。
我是否忽略了某些东西,或者第二种方法真的是实现这一目标的最佳方法吗?
【问题讨论】:
标签: wpf mvvm caliburn.micro