2011-06-13 121 views
5

我目前正在用Caliburn.Micro查看構圖。我有一個工作示例,其中有多個基於用戶控件的視圖通過附加屬性路徑的「View.Model」注入到主殼體中。到現在爲止還挺好。Caliburn.Micro:以編程方式創建和綁定視圖

在我的應用程序中,我正在使用主要是WinForms和一些WPF的混合環境,所以沒有供Caliburn管理的WPF「shell」。我希望能夠根據需求創建我的視圖,並將它們添加到我的WinForms應用程序中的佔位符。

我想知道我是如何使用Caliburn以編程方式創建視圖(這將是一個包含子用戶控件的用戶控件),以便執行所有約定,模型綁定和子視圖注入。

回答

13

一旦你有一個視圖實例和相應的視圖模型,Caliburn ViewModelBinder可用於啓動手柄。調用Bind做出決議注入的意見和慣例基結合,應用等:從BootstrapperBase.DisplayRootViewFor

SomeCompositionView view = new SomeCompositionView(); 

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

    ViewModelBinder.Bind(viewModel, view, null); 

    ElementHost.Child = view; 
+1

一兩件事,它不調用初始化/如果你做這樣的激活/停用。 – kamranicus 2013-10-18 02:13:05

10

代碼片段:雖然

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