我目前正在使用Caliburn.Micro中的视图合成进行实验。我有一个工作示例,我通过“View.Model”附加属性路由将多个基于用户控件的视图注入到我的主shell中。到目前为止一切都很好。
在我的应用程序中,我正在使用主要是WinForms和一些WPF的混合环境,因此没有用于Caliburn管理的WPF“shell”。我希望能够按需创建我的视图,并将它们添加到我的WinForms应用程序中的占位符。
我想知道如何使用Caliburn以编程方式创建视图(将是包含子用户控件的用户控件),以便执行所有约定,模型绑定和子视图注入。
答案 0 :(得分:14)
一旦有了视图实例和相应的视图模型,Caliburn ViewModelBinder
就可以用来启动句柄。调用Bind
可以解析注入的视图并应用基于约定的绑定等:
SomeCompositionView view = new SomeCompositionView();
ISomeCompositionViewModel viewModel = IoC.Get<ISomeCompositionViewModel>();
ViewModelBinder.Bind(viewModel, view, null);
ElementHost.Child = view;
答案 1 :(得分:10)
BootstrapperBase.DisplayRootViewFor
的代码段:
var viewModel = IoC.GetInstance(viewModelType, null);
var view = ViewLocator.LocateForModel(viewModel, null, null);
ViewModelBinder.Bind(viewModel, view, null);
var activator = viewModel as IActivate;
if(activator != null)
activator.Activate();