Caliburn Micro Winforms MEF实施

时间:2016-11-11 17:05:22

标签: c# .net wpf winforms caliburn.micro

我叫Max。我正在研究一个带有caliburn micro的项目。 我正在尝试在MEF的帮助下在C#中创建一个基于插件的应用程序。

我正在使用WPF。所以我把我的应用程序剥离到最低限度。使用caliburn的绑定在测试WPF应用程序中工作正常。我现在遇到的问题是ShellView(WPF UserControl)需要存在于WinForm第三方应用程序的ElementHost中。

我无法弄清楚如何创建正确的绑定。因此,caliburn的“魔力”也适用于winform应用程序。也许你们中的一个裂缝可以帮助我。我用Google搜索并试了整整一天。

非常感谢您的帮助。 Greets Max

项目链接: https://www.dropbox.com/s/y88kgnh0wscy2jr/CaliburnMEF_Example.zip?dl=0

1 个答案:

答案 0 :(得分:1)

CM GitHub上提供的示例已经有一段时间...,https://github.com/Caliburn-Micro/Caliburn.Micro/tree/master/samples/Caliburn.Micro.WinFormsInterop/Caliburn.Micro.WinFormsInterop

- edit-- 您将此代码段与当前测试项目进行了近距离比较。你错过了几个关键项目......参考评论

 protected override void StartRuntime()
 {
        base.StartRuntime();

        var vm = IoC.Get<ShellViewModel>(); // ok
        var view = ViewLocator.LocateForModel(vm, null, null); // needed

        //binds the viewmodel to the view & wire up controls...
        ViewModelBinder.Bind(vm, view, null); // required!

        var activator = vm as IActivate; // required

        if (activator != null)
            activator.Activate();  // required

        _host.Child = view;   // since Forms is ViewFirst, by default.

 }

只需几个额外步骤即可使用ElementHost控件。至于绑定,它应该按预期工作。如果您在绑定其他控件(第三方)时遇到问题,则可能必须创建约定来支持它们。这非常依赖于控制本身。