我对此很陌生,但我会尽力提供帮助:当您运行使用 Caliburn Micro 构建的应用程序时,窗口管理器会自动用于创建启动窗口。关于引导程序:
protected override void Configure()
{
container = new CompositionContainer(new AggregateCatalog(AssemblySource.Instance.Select(x => new AssemblyCatalog(x)).OfType<ComposablePartCatalog>()));
CompositionBatch batch = new CompositionBatch();
batch.AddExportedValue<IWindowManager>(new WindowManager());
batch.AddExportedValue<IEventAggregator>(new EventAggregator());
batch.AddExportedValue(container);
container.Compose(batch);
}
您可以使用此窗口管理器实例来管理不同的对话框。然后你只需要在需要的视图模型中导入窗口管理器:
private readonly IWindowManager _windowManager;
[ImportingConstructor]
public FooViewModel(IWindowManager windowManager)
{
_windowManager = windowManager;
}
请查看 caliburn 微文档 ( http://caliburnmicro.codeplex.com/documentation ) 的示例以及此博客: http: //www.mindscapehq.com/blog/index.php/2012/03 /13/caliburn-micro-part-5-the-window-manager/
视图模型之间的通信由事件聚合器完成。