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

Tim*_*oyd 7 caliburn.micro

我目前正在Caliburn.Micro中试验视图合成.我有一个工作示例,我通过"View.Model"附加属性路由将多个基于用户控件的视图注入到我的主shell中.到现在为止还挺好.

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

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

Tim*_*oyd 14

ViewModelBinder一旦有了视图实例和相应的视图模型,Caliburn 就可以用来启动手柄.调用Bind解析注入的视图并应用基于约定的绑定等:

    SomeCompositionView view = new SomeCompositionView();

    ISomeCompositionViewModel viewModel = IoC.Get<ISomeCompositionViewModel>();

    ViewModelBinder.Bind(viewModel, view, null);

    ElementHost.Child = view;  
Run Code Online (Sandbox Code Playgroud)


xme*_*eko 12

代码片段来自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();
Run Code Online (Sandbox Code Playgroud)