所以我有一个ViewModel,它包含从列表中选择一个人的逻辑,以及要被选中的人是否在列表中没有一个列表项来打开一个新对话来创建该人。
我的问题是:我如何在子视图模型中创建人并将其获取在父视图中。我搜索了很多,发现没有什么令人满意的。 据我所知,至少有三种可能性: 1.使用CMs EventAggregator向Parent发送消息(以及其他所有人都在监听) 2.使用子VM上的属性,并在WindowManger关闭对话后访问它。 3.实施IResult
我已经完成了第一个,但这(如上所述)并不令人满意。我不希望每个人都得到结果,因为他听了EventAggregator。第二个是(在我看来)不是很像MVVM(或者是吗?),因为如果它是异步的我无法控制它。
据我所知,从CMs doc来看,第三种选择是首选方式。但是我没有找到解释如何使其适应我的解决方案。
我必须得到用户输入,这在Execute(CoroutineExecutionContext context)
方法中是不可能的。
我是否忽视了某些事情,或者第二种方法是否真的是实现这一目标的最佳途径?
答案 0 :(得分:1)
第二种方法是完全正常我有一些情况,我需要一个响应结果继续并在关闭与我在另一个方法调用中调用的viewmodel关联的视图时获取它,它可以通过特定服务完成旨在获取结果,如果您正在寻找SOC以避免以后发生冲突。第一种方法实际上是我用于一些事情的东西,除了我直接控制什么可以看到消息(要监视的新类对象)和唯一可以对消息作出反应的屏幕将做一些事情。第三种方法非常强大但是我还没有真正进入CoRoutines的使用,它是async / await可用之前异步的答案。
中有很多IResult示例