我叫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
答案 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控件。至于绑定,它应该按预期工作。如果您在绑定其他控件(第三方)时遇到问题,则可能必须创建约定来支持它们。这非常依赖于控制本身。