2

我喜欢 Caliburn.Micro 中的 Coroutine/IResult 实现,它允许我使用 MVVM 逻辑来控制在视图上执行的几个操作。

但是,在处理来自 eventtaggregator 的消息时,我需要使用相同的方法。我的视图模型实现了 IResult,这导致了以下方法:

public void Handle(T message) { ... }

我尝试更改方法以返回 IResult 或 IEnumerable,但当然不会编译,因为那时我没有遵循接口..

现在我正在使用一种方法来创建我需要的 IResults 列表,然后调用

Caliburn.Micro.Coroutine.BeginExecute(routines.GetEnumerator())

但我不喜欢那个解决方案,我不确定执行在哪些线程上运行。此外,我的例程中没有任何上下文,但我理解上下文可能很困难,因为消息可能来自任何地方。但是,如果 viewmodel 是 ViewAware,可以获取上下文还是?

其他人在 Handle 实现的上下文中做了什么?有什么经验吗?

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

4

1 回答 1

1

一种选择是基于 Caliburn.Micro 创建您自己的 EA,它了解协程。我们已经考虑过开箱即用地添加它,但我还没有开始考虑它。

于 2012-05-15T17:23:42.277 回答