概要
Prism提供指導,幫助您更輕松地設計和構建,靈活且易於維護的客戶端業務應用程序,這些應用程序可在Windows運行時,Windows Presentation Foundation(WPF)桌面,Silverlight或Windows Phone 7上運行。隨着時間的推移而演變
使用體現重要架構設計原則的設計模式,例如關注點分離和松散耦合,Prism幫助您設計和構建體現重要的表示和業務邏輯的應用程序,這些應用程序通常與后端系統和服務交互,並使用分層架構,可以跨多個層進行物理部署。預計該應用程序將在其生命周期內發生重大變化,以響應新的需求和商機。簡而言之,這些應用程序“經久耐用”,“為變革而打造”。不需要這些特性的應用程序可能無法使用Prism。
社區
WPF的Prism和Windows Runtime的Silverlight和Prism擁有蓬勃發展的在線社區。
在這些社區網站上,您可以發布問題,提供反饋或與其他用戶聯系以分享想法。社區成員還可以幫助Microsoft計划和測試未來的產品,並下載其他內容,例如擴展和培訓材料。
入門演示:
示例中用到了8個子模塊, 所有的子模塊統一繼承 IModule接口, 實現Initialize方法。如下代碼所示:
public class ModA : IModule { public ModA(IRegionViewRegistry registry) { this.regionViewRegistry = registry; } private readonly IRegionViewRegistry regionViewRegistry; public void Initialize() { regionViewRegistry.RegisterViewWithRegion(Module.ModA.ToString(), typeof(Hello)); } }
在啟動項中的app.xaml中, 重寫OnStartUp方法, 添加Bootstrapper類啟動項。
protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); Bootstrapper bootstrapper = new Bootstrapper(); bootstrapper.Run(); }
Bootstrapper類的具體實現如下:
class Bootstrapper : UnityBootstrapper { protected override DependencyObject CreateShell() { return this.Container.Resolve<MainWindow>(); } protected override void InitializeShell() { base.InitializeShell(); App.Current.MainWindow = (Window)this.Shell; App.Current.MainWindow.Show(); } protected override void ConfigureModuleCatalog() { base.ConfigureModuleCatalog(); ModuleCatalog moduleCatalog = (ModuleCatalog)this.ModuleCatalog; moduleCatalog.AddModule(typeof(ModA.ModA)); moduleCatalog.AddModule(typeof(ModB.ModB)); moduleCatalog.AddModule(typeof(ModC.ModC)); moduleCatalog.AddModule(typeof(ModD.ModD)); moduleCatalog.AddModule(typeof(ModE.ModE)); moduleCatalog.AddModule(typeof(ModF.ModF)); moduleCatalog.AddModule(typeof(ModG.ModG)); moduleCatalog.AddModule(typeof(ModH.ModH)); } }
在Bootstrapper中, 通過重寫了 ConfigureModuleCatalog方法 , 添加各個子模塊的 IModule具體實現。
界面層:
模塊顯示區域設置RegionName, 也可以利用后台代碼進行程序集加載的方式, 如此固定是演示其效果:
項目解決方案:
模塊的實現示例代碼, 通過RegisterViewWithRegion注冊指定模塊, 和向其指定的View頁 :
項目源代碼