我有一个由Conductor ViewModel呈现的Caliburn.Micro shell(即包含其他视图的空XAML视图)。从那里我通过以下方式打开一个屏幕:
ActivateItem(...)
通常从新显示的对话框中,用户可以执行一些操作并单击按钮(OK、Cancel、Build ....),这些按钮应该每个都转换到另一个屏幕(在 shell 中)。
public MyDialog : Screen
{
public void Ok()
{
// TODO: Somehow tell the conductor or called of this class about this action.
}
}
实现这种对话动作/消息屏幕转换的好方法是什么?
- 简单的.NET 事件是可能的——这不是一个坏主意吗?
- CM
IEventAggregator
也应该通过改变视图来工作 - 从 shell Conductor 检查 ViewModel结果一旦通过
TryClose()
-- 应该是可能的,只是不知道如何在 CM 中实现这一点。 - 从该屏幕(通过 IoC 或直接)引用 shell Conductor 实例——这似乎是强耦合。
您能否提一些建议。