Pregunta

Esto se relaciona con Orientación de aplicaciones compuestas para WPF, o Prism.

Tengo una "MainRegion" en mi concha. Mis distintos módulos se cargarán en esta región principal. Puedo rellenar una lista de módulos disponibles en un menú y seleccionarlos para cargar. En el clic del menú que hago:

var module = moduleEnumerator.GetModule(moduleName);
moduleLoader.Initialize(new[] { module });

En la primera vez todo funciona bien, ya que los métodos de los módulos de inicialización () se ejecutan, pero después el módulo 1, Module2 y Modulo3 se inicializan, no pasa nada cuando hago clic para cargar Module2 de nuevo.

Mi pregunta: ¿cómo puedo activar un módulo sobre la demanda, después de su método initialize se ha ejecutado

Gracias por su ayuda!

¿Fue útil?

Solución

En realidad no activar el módulo. Se activa una vista en una región. Tome una lectura de esta artículo .

El método de inicialización sólo se le llama la vez para cada módulo. El hecho de que usted está viendo una vista en el módulo que se activa cuando se llama a LoadModule Conjeturaría es debido al hecho de que el método Initilalize está registrando una vista con una región. Esto activará la vista. Si usted tuviera más de una vista entonces la última registrada sería la activa.

Para activar un punto de vista es necesario llamar al método Activate de la región (suponiendo un inyectada IUnityContainer y IRegionManager) ...

// Get a view from the container.
var view = Container.Resolve<MyView>();

// Get the region.
var region = RegionManager.Regions["MyRegion"];

// Activate the view.
region.Activate(view);

En función del tipo de control de la región, esta podrá sustituir la opinión de que es allí o agregar a ella.

Otros consejos

Puede eliminar una vista llamando al método Remove de las Regiones.

public void RemoveViewFromRegion(string viewName, string regionName, object defaultView)
    {
      IRegion region = regionManager.Regions[regionName];
      object view = region.GetView(viewName);
      region.Remove(view);
      region.Activate(defaultView); 
    }

Usted debe tener un ContentControl que será su región. A continuación, tendrá que añadir todos los módulos de esta región. Al hacer clic en el menú que puedes usar método Activate (...) de la región con el fin de activar el módulo en particular.

¿Quiere decir esto cuando se activa el módulo, a continuación, otros módulos que pueden ser superpuestos que se establecen en Visibility.Collapsed?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top