Domanda

È possibile registrare un adattatore di regione all'interno di un modulo?

Ho un ContentControl nel mio Shell.xaml impostato sulla regione "MainRegion" che attualmente viene popolata con un modulo contenente il controllo AvalonDock.Al momento ho l'adattatore regionale AvalonDock nella mia app Shell, ma vorrei inserirlo nel modulo e registrarmi.Voglio mantenere questo programma flessibile in modo che se decidiamo di utilizzare qualcosa di diverso da AvalonDock, posso facilmente utilizzare un altro modulo senza dover modificare il mio assembly Shell (rimuovendo l'adattatore della regione avalondock).

Immagino che qualcosa di simile sia possibile.Qualcuno l'ha fatto prima?

Nel programma di avvio automatico in questo momento è:

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

Questo è ciò che vorrei eseguire nel modulo anziché nel programma di avvio automatico della shell.

È stato utile?

Soluzione

La risposta è qui da codeplex http://compositewpf.codeplex.com/discussions/250892

Lo scenario che stai descrivendo è possibile. Sebbene la regione personalizzata gli adattatori devono essere registrati in RegionAdapterMappings in Bootstrapper's ConfigureRegionAdapterMappings metodo, è possibile registrare una custom adattatore regionale dall'interno di un modulo.

Potresti, ad esempio, ottenere un file riferimento a RegionAdapterMappings nella tua classe Module utilizzando iniezione del costruttore e chiama il file Metodo RegisterMapping lì. Questo è possibile poiché esiste una classe denominata MefRegionAdapterMappings, che esporta RegionAdapterMappings come file esportazione condivisa. Nota che dovresti esserlo consapevole dei problemi di tempistica che possono sorgono a causa di ciò. Tu dovresti essere attenzione a registrare la mappatura personalizzata prima di tentare di creare una regione che utilizza quell'adattatore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top