Pergunta

É possível registrar um adaptador de região dentro de um módulo?

Eu tenho um ContentControl em meu Shell.xaml definido para a região "MainRegion" que atualmente é preenchido com um módulo contendo o controle AvalonDock.Atualmente, tenho o adaptador de região AvalonDock em meu aplicativo Shell, mas gostaria de colocá-lo no módulo e registrar-se.Quero manter este programa flexível para que, se decidirmos usar algo diferente de AvalonDock, eu possa facilmente usar outro módulo sem ter que modificar meu conjunto Shell (removendo o adaptador da região avalondock).

Imagino que algo assim seja possível.Alguém já fez isso antes?

No bootstrapper agora está:

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;
}

Isso é o que eu gostaria de fazer no módulo em vez do bootstrapper do Shell.

Foi útil?

Solução

A resposta está aqui em codeplex http://compositewpf.codeplex.com/discussions/250892

O cenário que você está descrevendo é possível. Embora região personalizada os adaptadores devem ser registrados no RegionAdapterMappings no Bootstrapper Método ConfigureRegionAdapterMappings, é possível registrar um costume adaptador de região de dentro de um módulo.

Você poderia, por exemplo, obter um referência aos RegionAdapterMappings em sua classe de módulo usando injeção de construtor, e chame o Método RegisterMapping lá. Isto é possível, pois há uma classe chamada MefRegionAdapterMappings, que exporta os RegionAdapterMappings como um exportação compartilhada. Observe que você deve ser ciente dos problemas de tempo que podem surgir devido a isso. Você deveria ser cuidado para registrar o mapeamento personalizado antes de tentar criar uma região que usa esse adaptador.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top