【问题标题】:Do I have need for a screen conductor (Caliburn Micro)我需要屏蔽导体吗(Caliburn Micro)
【发布时间】:2013-11-21 23:36:04
【问题描述】:

我正在开发一个单一表单应用程序,我打算只打开模式对话框。其目的主要是从用户那里获取输入以创建对象以存储在数据库中。

  1. 我需要一个屏幕导体还是一个窗口管理器就足够了?我已经尝试阅读有关该主题的所有内容,但我仍然不确定。

    如果没有填写一定数量的数据,我希望不关闭模式对话框的好处,所以我认为这将被归类为生命周期管理,从而迫使我使用导体,或者可以只是窗口管理器处理吗?我的印象是任何打开一个新窗口的事情都不能与指挥一起完成?

  2. 1234563如事件中指定的那样。后者会不会不好,因为它在每个类和事件处理类之间形成了紧密的关系?

谢谢

【问题讨论】:

    标签: c# wpf caliburn.micro


    【解决方案1】:
    1. 我会在这里使用导体,是的,它可以显示模态对话框。查看Billy Hollis Hybrid Shell 文章以查看使用对话框和脏跟踪(检查表单是否有要保存的信息) 的示例应用程序,这里是WPF application 的链接我修改了哪些不使用 MEF。
    2. 如果总是喜欢传递我的依赖关系并通过构造函数注入它们,那么除非我真的需要,否则我不会引发事件,无论如何我会使用 EventAggregator 然后而不是正常的 .NET 事件,第一个解决方案的可测试性更好,并清楚地说明了应用程序的每个部分需要什么以及它做了什么。

    【讨论】:

    • 我意识到这已经很老了,但我很想看到“HelloScreens”应用程序的 WPF 版本。我点击了指向您的 WPF 修改版本的链接,但它也是 Silverlight。在某个地方有这个的 WPF 版本吗?
    • @Sean 该链接实际上指向 WPF 应用程序!它在 4shared.com 上
    • 谢谢,这个应用帮了大忙。我第一次下载了正确的应用程序,但我也刚刚下载了原版,我无意中解压了错误的应用程序!
    • @Ibrahim Najjar,也在 WPF 中工作。如果我们仍然可以在 WPF 中访问 Hello Screens 应用程序,那就太好了。谢谢!
    • 嗨@Will。不幸的是,那是很久以前的事了。我没有那个投影了。祝你好运
    【解决方案2】:

    我对此很陌生,但我会尽力提供帮助:当您运行使用 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/

    视图模型之间的通信由事件聚合器完成。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-29
      • 2012-10-24
      相关资源
      最近更新 更多