1、将App.xaml中的StartupUri="MainWindow.xaml"删除。

  2、使用NuGet安装Prism.Wpf、Prism.Core、Prism.Unity。

  3、添加类“Bootstrapper”,编辑如下:

 1 using Microsoft.Practices.Unity;
 2 using Prism.Regions;
 3 using Prism.Unity;
 4 using System.Windows;
 5 using System.Windows.Controls;
 6 using CustomRegions.Prism;
 7 using CustomRegions.Views;
 8
 9 namespace CustomRegions
10 {
11     public class Bootstrapper:UnityBootstrapper
12     {
13         protected override DependencyObject CreateShell()
14         {
15             return Container.Resolve<MainWindow>();
16         }
17
18         protected override void InitializeShell()
19         {
20             Application.Current.MainWindow.Show();
21         }
22
23         protected override RegionAdapterMappings ConfigureRegionAdapterMappings()
24         {
25             RegionAdapterMappings mappings = base.ConfigureRegionAdapterMappings();
26             mappings.RegisterMapping(typeof(StackPanel), Container.Resolve<StackPanelRegionAdapter>());
27             return mappings;
28         }
29     }
30 }

  4、创建文件夹Views,将MainWindow.xaml移动到此文件夹中。添加Prism文件夹,添加“StackPanelRegionAdapter.cs”类。

    

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 using System.Windows;
 7 using System.Windows.Controls;
 8 using Prism.Regions;
 9
10 namespace CustomRegions.Prism
11 {
12     public class StackPanelRegionAdapter:RegionAdapterBase<StackPanel>
13     {
14         public StackPanelRegionAdapter(IRegionBehaviorFactory regionBehaviorFactory)
15             : base(regionBehaviorFactory)
16         {
17
18         }
19
20         protected override void Adapt(IRegion region, StackPanel regionTarget)
21         {
22             region.Views.CollectionChanged += (s, e) =>
23             {
24                 if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add)
25                 {
26                     foreach (FrameworkElement element in e.NewItems)
27                     {
28                         regionTarget.Children.Add(element);
29                     }
30                 }
31
32                 //handle remove
33             };
34         }
35
36         protected override IRegion CreateRegion()
37         {
38             return new AllActiveRegion();
39         }
40     }
41 }

 1 <Window x:Class="CustomRegions.Views.MainWindow"
 2         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 3         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 4         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
 5         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
 6         xmlns:local="clr-namespace:CustomRegions.Views"
 7         xmlns:prism="http://prismlibrary.com/"
 8         mc:Ignorable="d"
 9         Title="Shell" Height="450" Width="800">
10     <Grid>
11         <ContentControl prism:RegionManager.RegionName="ContentRegion"></ContentControl>
12     </Grid>
13 </Window>

转载于:https://www.cnblogs.com/bjxingch/articles/9546855.html

03、CustomRegions相关推荐

  1. 【Kubernetes 企业项目实战】03、基于 Alertmanager 发送报警到多个接收方(下)

    目录 一.promethues 采集 tomcat 监控数据 1.1 制作 tomcat 镜像 1.2 基于上面的镜像创建一个 tomcat 实例 1.3 采集数据 二.promethues 采集 r ...

  2. 每日一学 | 2021-05-19 | Power BI 学习笔记03、04

    学习网址:孙兴华讲PowerBI火力全开版[本季完]PowerBI教程 Power BI教程 DAX语言 Access教程 Access数据库 Access_哔哩哔哩 (゜-゜)つロ 干杯~-bili ...

  3. Python可视化数据分析03、jieba【分词】

    Python可视化数据分析03.jieba[分词]

  4. Spark高效数据分析03、Spark SQL

    Spark高效数据分析03.Spark SQL

  5. 尝试manjar20.03、fedora32、ubuntu20.04作为主力操作系统

    编写日期:2020年7月23日19点09分 本篇为连载文章 修改日期:2020年8月3日星期一 9:44 首先manjaro是从搜索引擎上搜到友好的linux桌面发行版搜到的,之前就有想要放弃wind ...

  6. SWMM WARNING警告02、03、04的检查修改

    新手(比如我)自己运行swmm,尤其是运行自己从零建立起来的SWMM模型时,经常会发现运行报告中报告了很多错误,就是WARNING/警告. 这些WARNING如果不予以修复,就会导致连续性误差飙升,一 ...

  7. 用C语言开发NES游戏(CC65)03、VRAM缓冲区

    粘贴到CSDN格式没调,想看格式好的点下面 https://happysoul.github.io/nes/nesdoug/ 我写了一些支持函数来填充VRAM缓冲区. 我使用了一些后台场景的代码,在c ...

  8. 极客新闻——03、陈庆敏:项目管理的三个关键

    本文笔记全部来自<极客新闻>--新鲜的技术资讯.权威的趋势剖析.别样的技术洞察 项目管理时一门抽象的学问,实践证明,能把项目带向成功的并非固定招式,也不是放之四海而皆准的标准,在项目管理这 ...

  9. 03、NavMesh--导航网格寻路

    一.概述: NavMesh是3D游戏世界中用于实现动态物体自动寻路的一种技术,他将游戏场景中复杂的结构组织关系简化为带有一定信息的网格, 进而在这些网格的基础上通过一些列的计算来实现自动寻路. 二.简 ...

最新文章

  1. 关于C++类实现哈夫曼树
  2. R语言使用caret包构建随机森林模型(random forest)构建回归模型、通过method参数指定算法名称、通过ntree参数指定随机森林中树的个数
  3. 【gradle】问题及解决
  4. xml xslt中的空格输出处理
  5. 【小白学习keras教程】二、基于CIFAR-10数据集训练简单的MLP分类模型
  6. JavaScript从入门到放弃 -(三)ES5新增方法及商品查询案例
  7. 【浏览器】浏览器模式与文档模式区别
  8. centos打开 mysql数据库文件_centos安装mysql数据库和配置mysql数据库
  9. jquery选择器从认识到使用初级篇
  10. php window open,【php】window.open()弹出窗口被拦截.
  11. Kinect 数据录制与回放
  12. 使用vue-i18n实现多语言
  13. 论文浏览(20) Video Classification with Channel-Separated Convolutional Networks
  14. Cadence软件盗版
  15. ariang/Aria2 RPC 服务器错误/Aria2状态/未连接
  16. [UER#6 C]逃跑
  17. SAP JCo业务情景:在线发票
  18. “黄金薄膜” CPI膜 —— 折叠屏手机核心材料
  19. 拓嘉恒业:拼多多开店条件分享
  20. 通过插入脚注的方式引用参考文献。

热门文章

  1. android手机定位
  2. intitle:客服机器人代码_游戏客服能影响企业发展?千万别大意
  3. resnet网络结构_深度学习之16——残差网络(ResNet)
  4. html div画三角,css画三角形
  5. 在python中定义类时、运算符重载_python自定义类运算符重载
  6. 笑脸符号怎么存入mysql_让MySql支持Emoji表情存储
  7. 仓库移动_移动式仓库、检修作业平台、储油柜胶囊破裂检测装置……这场科技秀超燃!...
  8. adas记录仪app_4K旗舰丨盯盯拍MINI5智能行车记录仪荣耀新生!
  9. 内地计算机科技学校,23所内地顶尖高校盘点!计算机学科哪家强?
  10. python归并算法