Some code to demo additional features of Prism (1) ServiceLocator.GetInstance = Container.Resolve and inject (2) Region Manager can define region for injecting UserControl (view) (3) Module execute injection of view (4) Adding Module to ModuleCatalog does injection of Region Manager App run bootstrapper public partial class App : Application { protected override void OnStartup(StartupEventArgs e) { OtherBootstrapper b = new OtherBootstrapper(); b.Run(); } } Bootstrapper: Service Locator, ModuleCatalog public class OtherBootstrapper : UnityBootstrapper { protected override void InitializeShell() { (Application.Current.MainWindow = (Window)Shell).Show(); } protected override DependencyObject CreateShell() { //ServiceLocator replaced Container.Resolve return ServiceLocator.Current.GetInstance<ShellWin>(); // return Container.TryResolve<ShellWin>(); } protected override void ConfigureContainer() { // this will run default config such as EventAggregator, ServiceLocator and region manager base.ConfigureContainer(); } protected override void ConfigureModuleCatalog() { // amazingly, add ModuelInfo will do DI just like container.Resolve ModuleCatalog.AddModule(new ModuleInfo() { ModuleName = typeof(OtherFeatureModule).Name, ModuleType = typeof(OtherFeatureModule).AssemblyQualifiedName }); base.ConfigureModuleCatalog(); } } public class OtherFeatureModule : IModule { IRegionManager _mgr; // DI does happend when ModuleInfor Added to Catalog public OtherFeatureModule(IRegionManager mgr) { _mgr = mgr; } public void Initialize() { _mgr.Regions["mainReg"].Add(new uc1 ()); } } ShellWin.xaml --- Region added to RegionManager.Region Collection xmlns:ps="http://www.codeplex.com/CompositeWPF" <Grid> <ContentControl ps:RegionManager.RegionName="mainReg" /> </Grid>
Sunday, August 5, 2012
Prism Region Manager, Sevice Locator and Module
Subscribe to:
Post Comments (Atom)
1 comment:
Your blog is very useful.
Post a Comment