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

8
我目前正在尝试使用Caliburn.Micro中的视图组合。我有一个工作示例,其中多个基于用户控件的视图通过“View.Model”附加属性路由注入到我的主壳程序中。到目前为止一切顺利。
在我的应用程序中,我正在处理主要是WinForms和一些WPF的混合环境,因此没有WPF“shell”可供Caliburn进行管理。我希望能够按需创建我的视图并将它们添加到我的WinForms应用程序中的占位符中。
我想知道如何使用Caliburn以编程方式创建视图(这将是包含子用户控件的用户控件),以便执行所有约定、模型绑定和子视图注入。
2个回答

14

Caliburn的ViewModelBinder可以在您拥有视图实例和相应的视图模型时使用。调用Bind会解析注入的视图并应用基于约定的绑定等。

    SomeCompositionView view = new SomeCompositionView();

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

    ViewModelBinder.Bind(viewModel, view, null);

    ElementHost.Child = view;  

1
不过需要注意的是,如果你这样做,它不会调用Initialize/Activate/Deactivate。 - kamranicus

13

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接