我正在开发一个单独的表单应用程序,我打算只打开模式对话框。其目的主要是从用户那里获取输入以创建存储在数据库中的对象。
我是否需要屏幕导体或窗口管理器是否足够?我已尽力阅读有关该主题的所有内容,但我仍不确定。
如果没有填写一定数量的数据,我希望不关闭模态对话框的好处,所以我认为这将被归类为生命周期管理,从而迫使我使用指挥,或者可以只是窗口管理器处理它?我的印象是,打开一个新窗口的任何东西都不能与售票员一起完成?
此外,就wpf而言哪个更好:我已经阅读过将窗口管理器的一个实例传递给需要它的每个类,还有关于引发一个类侦听的事件并打开一个窗口如事件中所指定。后者会不好,因为它会在每个类和事件处理类之间形成紧密的关系?
由于
答案 0 :(得分:1)
答案 1 :(得分:0)
我对此很新,但我会尽力提供帮助:当您运行使用Caliburn Micro构建的应用程序时,Window Manager会自动用于创建启动窗口。关于引导程序:
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;
}
请查看校准微文档(http://caliburnmicro.codeplex.com/documentation)的样本以及此博客:http://www.mindscapehq.com/blog/index.php/2012/03/13/caliburn-micro-part-5-the-window-manager/
视图模型之间的通信由事件聚合器完成。