2011-06-13 19 views
5

Actualmente estoy experimentando con la composición de vistas en Caliburn.Micro. Tengo un ejemplo de trabajo en el que tengo múltiples vistas basadas en el control del usuario inyectadas en mi shell principal a través de la ruta de propiedad adjunta "View.Model". Hasta aquí todo bien.Caliburn.Micro: Crear y vincular Ver programáticamente

En mi aplicación propia estoy trabajando con un entorno mixto de WinForms principalmente, con algunos WPF, por lo que no hay WPF "shell" para que Caliburn los administre. Me gustaría poder crear mis vistas bajo demanda y agregarlas a marcadores de posición en mi aplicación WinForms.

Me gustaría saber cómo hago para crear una vista (que será un control de usuario que contenga controles secundarios de usuario) programáticamente usando Caliburn para que se lleven a cabo todas las convenciones, enlaces de modelo e inyección de subvista.

Respuesta

13

El Caliburn ViewModelBinder se puede utilizar para hacer girar el mango una vez que tiene una instancia de vista y un modelo de vista correspondiente. Llamando Bind resuelve inyectan puntos de vista y se aplica convención basada unión, etc:

SomeCompositionView view = new SomeCompositionView(); 

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

    ViewModelBinder.Bind(viewModel, view, null); 

    ElementHost.Child = view; 
+1

Pero una cosa, que no llama Inicializar/Activar/desactivar si lo hace como esto . – kamranicus

10

fragmento de código 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(); 
Cuestiones relacionadas