码迷,mamicode.com
首页 > 其他好文 > 详细

Prism 框架基础架构 模块设计

时间:2018-07-04 17:35:37      阅读:261      评论:0      收藏:0      [点我收藏+]

标签:public   多个   解决   col   商机   区域   ring   求和   void   

概要

Prism提供指导,帮助您更轻松地设计和构建,灵活且易于维护的客户端业务应用程序,这些应用程序可在Windows运行时,Windows Presentation Foundation(WPF)桌面,Silverlight或Windows Phone 7上运行。随着时间的推移而演变

使用体现重要架构设计原则的设计模式,例如关注点分离和松散耦合,Prism帮助您设计和构建体现重要的表示和业务逻辑的应用程序,这些应用程序通常与后端系统和服务交互,并使用分层架构,可以跨多个层进行物理部署。预计该应用程序将在其生命周期内发生重大变化,以响应新的需求和商机。简而言之,这些应用程序“经久耐用”,“为变革而打造”。不需要这些特性的应用程序可能无法使用Prism。

 

社区

WPF的Prism和Windows Runtime的SilverlightPrism拥有蓬勃发展的在线社区。

在这些社区网站上,您可以发布问题,提供反馈或与其他用户联系以分享想法。社区成员还可以帮助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页 :

技术分享图片

 

项目源代码

 

Prism 框架基础架构 模块设计

标签:public   多个   解决   col   商机   区域   ring   求和   void   

原文地址:https://www.cnblogs.com/zh7791/p/9264170.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!