我喜欢Caliburn.Micro中的Coroutine / IResult实现,允许我使用MVVM逻辑来控制对视图执行的多个操作。
但是,在处理来自eventaggregator的消息时,我需要使用相同的方法。我的viewmodel实现了IResult,它产生了以下方法:
public void Handle(T message) { ... }
我已经尝试更改方法以返回IResult或IEnumerable,但当然不能编译,因为我当时没有关注接口..
现在我正在使用创建我需要的IResults列表然后调用
的方法Caliburn.Micro.Coroutine.BeginExecute(routines.GetEnumerator())
但我不喜欢那个解决方案,而且我不确定执行的线程是什么。此外,我的例程中没有任何上下文,但我理解上下文可能很困难,因为消息可能来自任何地方。但是,如果viewmodel是ViewAware,则可以获取上下文或?
其他人在Handle -implementations的背景下做了什么?有经验吗?
希望有一些很酷的解决方案!
答案 0 :(得分:1)
一种选择是基于Caliburn.Micro创建自己的EA,它可以理解协同程序。我们已经考虑过将其添加到开箱即用中,但我还没有完成它。