• Prism学习(6)Shell Region View


    有几天没有写博客了. 清明节啊! 在上一章的例程中通过Prism实现了Silverlight控件的简单加载。今天继续来个更复杂一点的。

    在Prism中有四个非常重要的对象: bootstrapper, shell. region, view。 bootstrapper在之前的章节中经常有用到,它作为一个启动器,用于系统的初始化工作。对于shell,个人理解,Shell就是系统的主界面,或者说,他是所有UI的容器。 Shell 里面一般都会有一个或多个Region。 Shell与Region的组合,在网上有人将它们与asp.net中的母板页做类比。这样类比很好,也确实差不多,Region的作用,跟网页中的 iframe差不多。只是Region中加载的是View,View就是一个用户控件。我将在下面的例程中一一讲述。

     还是在上一章的例程中进行修改:

    1. 删除解决方案中所有跟UIService相关的东东, 然后,在ModuleB项目中添加两个用户控件.在ModuleA项目添加一个用户控件。

    2, 在SLDemoApplication项目中添加一个用户控件,取名为Shell.xaml。这个用户控件将作为主窗体,在这里,我们称之为 Shell(上面讲到的,所有控件的容器。)

    3, 在Shell 中添加两个容器,代码如下:

     1     <Grid x:Name="LayoutRoot" Background="White">
     2 
     3         <Grid.ColumnDefinitions>
     4             <ColumnDefinition/>
     5             <ColumnDefinition/>
     6         </Grid.ColumnDefinitions>
     7 
     8         <ItemsControl 
     9             regions:RegionManager.RegionName="ListRegion"/>
    10 
    11         <ContentControl Grid.Column="1" 
    12             regions:RegionManager.RegionName="MainRegion"/>
    13    </Grid>

    4. 分别在这两个项目中的Module类,使用RegionManager 将用户控件关联到Region上。方法见如下的代码:

     1     public class TextServiceModule: IModule 

     2     {
     3         IUnityContainer container;
     4         RegionManager regionManager;
     5 
     6         public TextServiceModule(IUnityContainer container, RegionManager regionManager)
     7         {
     8             this.container = container;
     9             this.regionManager = regionManager;
    10         }
    11         public void Initialize()
    12         {
    13             RegisterServices();
    14             RegisterViews();
    15         }
    16         private void RegisterServices()
    17         {
    18             container.RegisterType<ITextService, TextService>();
    19         }
    20         private void RegisterViews()
    21         {
    22             regionManager.RegisterViewWithRegion("ListRegion"typeof(ModuleAViewOne));
    23             regionManager.RegisterViewWithRegion("ListRegion"typeof(ModuleAViewTwo));
    24         }
    25     }


    通过以上简单的几步, 就完成了用户控件的自动加载,并且是可插拔的加载!现在太晚了,关于在View中应用MVVM的部分就不说了,代码里面有。

    先上传今天的代码,里面有关于MVVM模式的简单应用。 请点击这里 下载。

  • 相关阅读:
    大型电商业务架构 IT大咖说
    携程开源配置中心Apollo的设计与实现 IT大咖说
    李善友《认知升级之第一性原理》--507张PPT全解!_搜狐科技_搜狐网
    http://www.educity.cn/luntan/144478_5.html
    微服务架构下的分布式数据存储-技术之家
    http://blog.longjiazuo.com/archives/3080
    实施微服务架构的关键技术
    微服务架构的分布式事务解决方案
    k8s~helm镜像版本永远不要用latest
    nginx~对没有定义service_name的三级域名进行过滤
  • 原文地址:https://www.cnblogs.com/prolove2/p/2433977.html
Copyright © 2020-2023  润新知