【prism系列】子窗口中如何实现区域(Region)管理

news2024/11/15 18:57:23

前言

        在之前系列文章《Region的用法》中,我提到无法在子窗口中实现区域管理,最近经过尝试发现其实是可以的,只是少了一个步骤而已!Region具体细节还请参考这篇。

【Prism系列】Region的用法_prism region_code bean的博客-CSDN博客Prism中的Region可以和WPF中提供的Frame进行类比,Frame通过加载不同的Page达到界面导航的效果。Region也有相同的作用,不过Region有Psrim框架以及容器的加持,能够支持更细致化的导航控制,更轻松的传参, 更方便的生命周期管理,以及提供更加松的耦合,等等。Region的整个套路和上一篇文章《》有着很多共同之处,大家可以对照学习。.........https://blog.csdn.net/songhuangong123/article/details/126587552#:~:text=%E5%8F%91%E5%B8%83-,%E3%80%90Prism%E7%B3%BB%E5%88%97%E3%80%91Region%E7%9A%84%E7%94%A8%E6%B3%95,-code%20bean

正文

        首先我先新建一个子窗口,就叫 PluginBaseWindow 吧。然后再子窗口中也放置一个区域:

这个和之前的在主窗口中步骤是一模一样的。然后通过 子窗口中的OK按钮实现子窗口的区域切换:

OKCmd = new DelegateCommand(() =>
{
    regionManager.RequestNavigate("BaseRegion", "TestView");
});

 截至到这里,和之前的操作没有任何的区域,但是子窗体中就是无法实现Region的管理,无法切换界面。

少了的步骤

        和主窗体不同,子窗体我们需要额外的步骤:也就是在打开子窗体之前我们需要加上:

//从容器中获取region管理器
var regionManager = ContainerLocator.Container.Resolve<IRegionManager>();
var provider = ContainerLocator.Container.Resolve<IContainerProvider>();

//通过provider新建一个PluginBaseWindow类型窗口
var win = provider.Resolve<PluginBaseWindow>();
//通过region管理器注册这个子窗口对象
RegionManager.SetRegionManager(win, regionManager);

然后再打开子窗口,此时就会发现,子窗体能实现Region的管理了。但是当你关闭子窗口,然后再打开时,会发现又报错了:

An exception occurred while creating a region with name 'BaseRegion'. The exception was: System.ArgumentException: Region with the given name is already registered: BaseRegion

他说,BaseRegion已经注册了!这个BaseRegion是子窗口中划分的Region管理区域,其实我们在通过注册窗口时完成的,这个函数会自动识别里面的区域,然后进行注册。

//通过region管理器注册这个子窗口对象
RegionManager.SetRegionManager(win, regionManager);

所以不用疑惑 :我没有注册BaseRegion呀,为啥说我注册了呢?那其实是上面这段代码完成的。

所以我们在关闭窗口之后,在加上一句:

//由于在弹窗服务当中设置区域, 在窗口再次打开的同时会提示区域名称已注册的问题,
//则你需要在关闭前移除原有的所有区域名即可。
regionManager.Regions.Remove("BaseRegion");

就能解决报错问题。

反思

        那为啥,主窗口比子窗口少了这个步骤呢?接下来也只是我的猜想。

回想一下我们在构建prsim程序的时候,是不是直接返回了一个主窗体给容器!

那估计就是在这里,prism框架帮我们做了这个事情,所以就不需要了。而我们自己打开子窗口就需要自己做这个事情了!

        那为啥主窗体不用 Remove Region?那当然是因为主窗体关闭程序就退出了呀~~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/487528.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一文全览各种 ES 查询在 Java 中的实现

ElasticSearch 进阶&#xff1a;一文全览各种 ES 查询在 Java 中的实现 以下为摘录自用&#xff0c;非本人撰写 本文基于elasticsearch 7.13.2版本&#xff0c;es从7.0以后&#xff0c;发生了很大的更新。7.3以后&#xff0c;已经不推荐使用TransportClient这个client&#xf…

浅谈自动驾驶技术

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和…

【Linux】5. 开发工具的使用(gcc/gdb/makefile)

Linux编译器-gcc/g使用 1. 复习编译链接过程 2. 理解选项当中的含义 这些选项难记住&#xff0c;怎么办&#xff1f; – ESc - iso(对应) gcc选项 -E 只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面-S 编译到汇编语言不进行汇编和链接-c 编译到目标代码-o …

基于OpenHarmony开发的健康生活应用(ArkTS)

健康生活应用&#xff08;ArkTS&#xff09; 介绍 本篇Codelab介绍了如何实现一个简单的健康生活应用&#xff0c;主要功能包括&#xff1a; 用户可以创建最多6个健康生活任务&#xff08;早起&#xff0c;喝水&#xff0c;吃苹果&#xff0c;每日微笑&#xff0c;刷牙&#…

【python语法大练习】【题库】Python 基础练习题库大全

【题库】Python 基础练习题库大全 编程题1. 从键盘输入两个数&#xff0c;求它们的和并输出2. 从键盘输入三个数到a,b,c中&#xff0c;按公式值输出 (input().split())3. 输出“人生苦短&#xff0c;我学Python”4. 计算 111213...m (sum函数)5. 计算分段函数[1] (format)6. 阶…

Ubuntu连接Xshell

Ubuntu连接Xshell 1、安装ssh&#xff0c;开启服务 1、安装ssh sudo apt-get install openssl-server 2、启动ssh服务 /etc/init.d/ssh start 3、修改文件&#xff0c;允许远程登陆 sudo vi /etc/ssh/sshd_config PermitRootLogin prohibit-password #默认为禁止登录 PermitR…

ESP-IDF中的event loop library事件循环库

文章目录 简介事件循环库的使用示例&#xff1a; 简介 Event Loop Library是一种信号传递机制&#xff0c;事件循环库允许组件声明事件&#xff0c;其他组件可以向其注册处理程序——当这些事件发生时将执行的代码。这允许松散耦合的组件将所需的行为附加到其他组件的状态更改…

华为OD机试(20222023)真题目录 + 考点 + 通过率

目录 华为OD机试是什么&#xff1f;华为OD面试流程&#xff1f;华为OD机试通过率高吗&#xff1f;华为OD薪资待遇&#xff1f;华为OD晋升空间&#xff1f;华为OD刷题列表&#xff0c;一天三题&#xff0c;刷出算法新高度&#xff0c;刷出人生新际遇。 大家好&#xff0c;我是哪…

基于Hebb学习的深度学习方法总结

基于Hebb学习的深度学习方法总结 0 引言1 前置知识1.1 Hebb学习规则1.2 Delta学习规则 3 SoftHebb学习算法3.1 WTA(Winner Take All)3.2 SoftHebb3.3 多层Hebb网络3.4 Hebb学习的性能测评 参考文献 0 引言 总所周知&#xff0c;反向传播算法&#xff08;back-propagating, BP&…

你想要的【微前端】都在这里了! | 京东云技术团队

作者&#xff1a;京东零售 郑炳懿 开篇&#xff1a; 如果你不知道微前端是什么&#xff0c;或者不知道微前端能解决什么问题&#xff0c;那么你可能不需要微前端。 在我看来&#xff0c;对于每一个没有使用过的新技术&#xff0c;都应该有以下几个过程&#xff1a; 1、调研…

【Android签名文件META-INF】

android安装包apk中&#xff0c;有一个META-INF文件夹&#xff0c;该文件夹下面必须有以下几个扩展名的文件&#xff1a;.SF&#xff0c;.RSA&#xff0c;*.MF。一般为MANIFEST.MF&#xff0c;包名.SF&#xff0c;包名.RSA&#xff08;也有可能是EC或者DSA&#xff09;。 其中…

聊聊ClickHouse向量化执行引擎-过滤操作

俄罗斯Yandex开发的ClickHouse是一款性能黑马的OLAP数据库&#xff0c;其对SIMD的灵活运用给其带来了难以置信的性能。本文我们聊聊它如何对过滤操作进行SIMD优化。 基本思想 1、有一个数组data&#xff0c;即ColumnVector::data&#xff0c;存放数据 2、使用uint8类型&#xf…

Metasploit渗透测试:工作区使用帮助

目录 ​编辑 help 查看工作区 添加工作区 显示工作区详情

《智能手机心率和呼吸率测量算法的前瞻性验证》阅读笔记

目录 一、论文摘要 1.背景 2.方法 3.结果 4.结论 二、论文十问 Q1&#xff1a;论文试图解决什么问题&#xff1f; Q2&#xff1a;这是否是一个新的问题&#xff1f; Q3&#xff1a;这篇文章要验证一个什么科学假设&#xff1f; Q4&#xff1a;有哪些相关研究&#xff…

No.046<软考>《(高项)备考大全》【专项2】《案例分析 - 计算题(中)》

案例分析 - 计算题&#xff08;中&#xff09; 章节其他部分3 成本管理3.1 挣值分析3.1.1 概念3.1.2 公式3.1.3 参数关系3.1.4 题目 3.2 挣值管理3.3 预测3.3.1 ETC(完成尚需估算)3.3.2 EAC(完工估算)3.3.3 BAC(完工预算) 3.4 绩效审查 章节其他部分 案例分析 - 计算题&#x…

27从零开始学Java之详解复杂的二维数组与多维数组

作者&#xff1a;孙玉昌&#xff0c;昵称【一一哥】&#xff0c;另外【壹壹哥】也是我哦 千锋教育高级教研员、CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 在前几篇文章中&#xff0c;壹哥给大家介绍了Java里的一维数组&#xff0c;涉及到了数组的创建初始化…

黑马程序员Dubbo快速入门,Java分布式框架dubbo教程

分布式系统中的相关概念 &#xff08;一&#xff09;互联网项目架构目标-特点 &#xff08;二&#xff09;互联网项目架构目标-目标 &#xff08;三&#xff09;集群和分布式 &#xff08;四&#xff09;架构演进 Dubbo概述 &#xff08;一&#xff09;dubbo概述 1、dub…

Oracle 修改 sga_target 参数设置,虚拟内存值设置

记录一次Oracle数据库单实例维护里程。 数据库启动报错 sga_target参数设置太小&#xff0c;导致数据库无法启动&#xff0c;这种情况下需要修改数据库的spfile的sga_target参数 修复过程如下。 1、启动报错 2、根据spfile 创建pfile 文件。 create pfile‘/app/oracle/i…

项目经理在项目中是什么角色?

有人说&#xff0c;项目经理就是一个求人的差事&#xff0c;你是在求人帮你做事。 有人说&#xff0c;项目经理就是一个与人扯皮的差事&#xff0c;你要不断的与开发、产品、测试等之间沟通、协调。 确实&#xff0c;在做项目的时候&#xff0c;有的人是为了完成功能&#x…

MYSQL基本操作(增删改查)

数据库的列类型 int&#xff1a;整型 用于定义整数类型的数据 float&#xff1a;单精度浮点4字节32位 准确表示到小数点后六位 double&#xff1a;双精度浮点8字节64位 char&#xff1a;固定长度的字符类 用于定义字符类型数据&…