如何在Caliburn Micro中使用来自Handle-implementation of IResult的协同程序

时间:2012-05-15 10:13:21

标签: c# wpf caliburn.micro

我喜欢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的背景下做了什么?有经验吗?

希望有一些很酷的解决方案!

1 个答案:

答案 0 :(得分:1)

一种选择是基于Caliburn.Micro创建自己的EA,它可以理解协同程序。我们已经考虑过将其添加到开箱即用中,但我还没有完成它。