Caliburn.Micro:以编程方式创建和绑定视图

时间:2011-06-13 16:06:29

标签: caliburn.micro

我目前正在使用Caliburn.Micro中的视图合成进行实验。我有一个工作示例,我通过“View.Model”附加属性路由将多个基于用户控件的视图注入到我的主shell中。到目前为止一切都很好。

在我的应用程序中,我正在使用主要是WinForms和一些WPF的混合环境,因此没有用于Caliburn管理的WPF“shell”。我希望能够按需创建我的视图,并将它们添加到我的WinForms应用程序中的占位符。

我想知道如何使用Caliburn以编程方式创建视图(将是包含子用户控件的用户控件),以便执行所有约定,模型绑定和子视图注入。

2 个答案:

答案 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();