Prism内置了几个区域适配器

ContentControlRegionAdapter

ItemsControlRegionAdapter

SelectorRegionAdapter

  • ComboBox

  • ListBox

  • Ribbon

  • TabControl

所以我们可以在ContentControl当中定义区域,

实际可以在任何元素上定义区域

如果定义的范围不再官方提供的默认适配器当中,则会引发异常。

自定义StackPanel区域适配器

一:新建一个类:StackPanelRegionAdapter

 1 namespace BlankApp1.Views.StackPanel_Prism
2 {
3 //1、继承类;RegionAdapterBase<>
4 public class StackPanelRegionAdapter : RegionAdapterBase<StackPanel>
5 {
6 //2、生成构造函数
7 public StackPanelRegionAdapter(IRegionBehaviorFactory regionBehaviorFactory) : base(regionBehaviorFactory)
8 {
9 }
10 //3、生成实现抽像类
11 protected override void Adapt(IRegion region, StackPanel regionTarget)
12 {
13 //代码意思
14 //动态设置他内容的一个代码区域
15 //1、检测这个区域的视图动态变化
16 region.Views.CollectionChanged += (s, e) =>
17 {
18 //判断他现在的行为是增加还是删除
19 //如果是增加行为
20 if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add)
21 {
22 //循环他的数组,获取所有控件
23 foreach (FrameworkElement item in e.NewItems)
24 {
25 regionTarget.Children.Add(item);
26 }
27
28 }
29
30 };
31 }
32
33 protected override IRegion CreateRegion()
34 {
35 //代码意思
36 //创建一个名为CreateRegionr的Region区域
37 //直接返回一个新的Region区域就可以了
38 return new Region();
39
40 }
41 }
42 }

二:View代码中的MainWindows代码

 1         public MainWindow(IRegionManager regionManager)
2 {
3 InitializeComponent();
4
5 //显示一个或循环显示多个
6 for (int a = 0; a < 10; a++)
7 {
8 regionManager.RegisterViewWithRegion("ContentRegion", typeof(ViewB));
9 }
10
11 RegionManager.SetRegionName(Ctr, "ContentRegion");
12
13 }

三、App.xaml.cs

//4、初始化
protected override void ConfigureRegionAdapterMappings(RegionAdapterMappings regionAdapterMappings)
{
base.ConfigureRegionAdapterMappings(regionAdapterMappings);
regionAdapterMappings.RegisterMapping(typeof(StackPanel), Container.Resolve<StackPanelRegionAdapter>());
}

        protected override Window CreateShell()
{
return Container.Resolve<MainWindow>();
} protected override void RegisterTypes(IContainerRegistry containerRegistry)
{ }
//4、初始化
protected override void ConfigureRegionAdapterMappings(RegionAdapterMappings regionAdapterMappings)
{
base.ConfigureRegionAdapterMappings(regionAdapterMappings);
regionAdapterMappings.RegisterMapping(typeof(StackPanel), Container.Resolve<StackPanelRegionAdapter>());
}

.

Region-区域(默认和新增)适配器的更多相关文章

  1. Halcon学习之六:获取Image图像中Region区域的特征参数

    area_center_gray ( Regions, Image : : : Area, Row, Column )    计算Image图像中Region区域的面积Area和重心(Row,Colu ...

  2. ASP.NET MVC 设置区域默认定向

    public override void RegisterArea(AreaRegistrationContext context) { context.MapRoute( "m_defau ...

  3. 自定义控件之Region区域

    构造Region 直接构造 public Region(Region region) //复制一个同样的Region变量 public Region(Rect r) public Region(int ...

  4. Firewalld--01 防火墙安全、基本指令、区域配置

    目录 Firewalld防火墙安全.基本指令.区域配置 1. 防火墙安全基本概述 2. 防火墙使用区域管理 3. 防火墙基本指令参数 4.防火墙区域配置策略 Firewalld防火墙安全.基本指令.区 ...

  5. 【读书笔记《Android游戏编程之从零开始》】15.游戏开发基础(剪切区域)

    剪切区域也称为可视区域,是由画布进行设置的:它指的是在画布上设置一块区域,当画布一旦设置了可视区域,那么除此区域外,绘制的任何内容都将看不到:可视区域可以是圆形.矩形等等. 画布提供了三种设置可视区域 ...

  6. ios 定位 监听是否跨入某个指定的区域

    /*****监听用户是否进入和走出 在某个区域*****/ 1 #import "ViewController.h" #import <CoreLocation/CoreLo ...

  7. iOS 系统二维码扫描(可限制扫描区域)

    使用 AVFoundation系统库来进行二维码扫描并且限制扫描二维码的范围.(因为默认的是全屏扫描) -(void)beginCode { //1.摄像头设备 AVCaptureDevice *de ...

  8. 将子域名请求路由到MVC区域

    写了个扩展,分享给需要的朋友. 0x01 使用方法 在mvc区域中的{xxxx}AreaRegistration.cs文件中,如ProjectsAreaRegistration.cs <pre& ...

  9. ASP.NET MVC 解决区域和全局控制器同名的问题

    话不多少 直接上代码 通常我们以为上边的是解决控制同名问题,是解决了一点,但是又出了以下问题,默认请求的不是项目默认的控制器而是该区域的控制器,在我之前开发的项目中,默认指向的是区域下的home控制器 ...

  10. Halcon算子--区域特征

    当我们想要提取Region时,图像处理后,往往存在几个类似的Region,此时,需要根据Region的一些特殊特征,来选择指定的Region. 求Region指定特征值:region_features ...

随机推荐

  1. python基础六(函数基础及参数使用)

    一. 函数定义 1.什么是函数 函数就相当于具备某一功能的工具 函数的使用必须遵循一个原则: 先定义 后调用2.为何要用函数 代码冗余,程序的组织结构不清晰,可读性差 可维护性.扩展性差3.如何用函数 ...

  2. 工作记录:Vue项目中使用WebSocket通讯

    WebSocket介绍 以下内容摘自维基百科: WebSocket是一种网络传输协议,可在单个TCP连接上进行全双工通信,位于OSI模型的应用层.WebSocket协议在2011年由IETF标准化为R ...

  3. .NET开源、免费、强大的交互式绘图库

    前言 今天大姚给大家分享一款.NET开源(采用MIT许可证).免费.强大的交互式绘图库,该库能够轻松地实现大型数据集的交互式显示.使用几行代码即可快速创建折线图.柱状图.饼图.散点图等不同类型的图表: ...

  4. NetAdapt:MobileNetV3用到的自动化网络简化方法 | ECCV 2018

    NetAdapt的思想巧妙且有效,将优化目标分为多个小目标,并且将实际指标引入到优化过程中,能够自动化产生一系列平台相关的简化网络,不仅搜索速度快,而且得到简化网络在准确率和时延上都于较好的表现   ...

  5. KingbaseES数据库改写SQL Server数据库CROSS APPLY和OUTER APPLY

    一.功能介绍: CROSS APPLY和OUTER APPLY是SQL Server中的一种连接操作,类似于JOIN语句可以将一张表与一个表函数或一个子查询进行关联.表函数是一种返回一个表类型的数据的 ...

  6. KingbaseES 数据库连接

    一.数据准备: create table student( id int , s_name varchar(20), t_id int ); create table teacher( id int ...

  7. Web、Android等程序开发中src引入外部文件和资源的方法总结

    方法一:使用相对于当前文件(源文件)的相对路径 使用 ../ 对于这个例子来说 ../ 把路径带到了项目根目录的下一级目录 1 <script src="../static/js/wo ...

  8. win10/11 暂停更新

    1. win+R 输入regeidt 进入注册表编辑器 2.在"计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Sett ...

  9. #折半搜索,状压dp#nssl 1471 Y

    分析 设\(dp[i][j][s]\)表示从\(i\)到\(j\)的一条路径状态为\(s\)是否存在 但是这样肯定会T掉,考虑拼凑路径,分成两部分, 设\(dp[0/1][s]\)分别表示以某个起点/ ...

  10. C语言简易万年历带注释

    同学问的课后作业,顺便加了写注释. #include<stdio.h> /* * 注意 每周的第一天是星期天 */ int main() { int day_per_mo[12] = { ...