Pregunta

¿Es posible registrar un adaptador de región dentro de un módulo?

Tengo un ContentControl en mi Shell.xaml configurado en la región "MainRegion" que actualmente se llena con un módulo que contiene el control AvalonDock.Actualmente tengo el adaptador de región AvalonDock en mi aplicación Shell, pero me gustaría colocarlo en el módulo y registrarme.Quiero mantener este programa flexible para que si decidimos usar algo que no sea AvalonDock, pueda usar fácilmente otro módulo sin tener que modificar mi ensamblaje de Shell (quitando el adaptador de región avalondock).

Me imagino que algo como esto es posible.¿Alguien ha hecho esto antes?

En bootstrapper ahora mismo es:

protected override RegionAdapterMappings ConfigureRegionAdapterMappings()
{
    RegionAdapterMappings mappings = base.ConfigureRegionAdapterMappings();
    var regionBehaviorFactory = Container.GetExportedValue<IRegionBehaviorFactory>();
    var regionManager = Container.GetExportedValue<IRegionManager>();
    mappings.RegisterMapping(typeof(Pane), new AvalonRegionAdapter(regionBehaviorFactory, regionManager));

    return mappings;
}

Esto es lo que me gustaría realizar en el Módulo en lugar del programa de arranque de Shell.

¿Fue útil?

Solución

La respuesta está aquí desde CodePlex http://compositewpf.codeplex.com/discussions/250892

El escenario que estás describiendo es posible. Aunque la región personalizada Los adaptadores están destinados a ser registrados. En la regiónAdapterMolpes en el Bootstrapper's Método ConfigurerEregionAdapterMappings, Es posible registrar una costumbre. Adaptador de región desde dentro de un módulo.

Podrías, por ejemplo, obtener un Referencia a la RegiónAdapterMappings en su clase de módulo usando inyección constructora, y llame al Método de registro allí. Este es posible ya que hay una clase llamada MefRegionAdapterMappings, que Exporta la regiónAdapterMolpes como un Exportación compartida. Tenga en cuenta que debe ser Consciente de los problemas de tiempo que pueden surgir debido a esto. Usted debería ser cuidado de registrar el mapeo personalizado Antes de intentar crear una región. que usa ese adaptador.

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