WPF+Prism 模块化编程(一)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

WPF+Prism 模块化编程(一)

  • 一、Prism项目创建安装
  • 二、将项目升级为Prism项目
  • 三、将Prism项目升级为支持模块化编程项目


一、Prism项目创建安装

1、新建WPF项目,创建基于 .NET Framework 框架的应用程序,项目名称为 PrismModelDemo,创建步骤如下所示。
在这里插入图片描述
在这里插入图片描述
项目创建完成后,新建Views文件夹和ViewModels 文件夹,移动 MainWindow.xaml 至 Views文件下,在ViewModels文件中新建 MainWindowViewModel.cs, 最终将自动生成的项目目录调整至如下所示:
在这里插入图片描述
注意事项:移动 MainWindow.xaml 至 Views文件后需要修改两个地方的文件路径,App.xml StartupUri=“MainWindow.xaml” 改成 StartupUri=“Views/MainWindow.xaml”,MainWindow.xaml 中 x:Class=“PrismModelDemo.MainWindow” 改为 x:Class=“PrismModelDemo.Views.MainWindow” ,修改后如下图所示:

在这里插入图片描述
在这里插入图片描述

二、将项目升级为Prism项目

1、打开NuGet依赖包管理界面,搜索 Prism,选择 Prism.Unity 安装。
在这里插入图片描述
2、Prism框架的MVVM绑定方式
在 MainWindow.xmal中添加Prism空间引用和自动绑定功能属性开启,这里我们注意的是,所用程序的视图模型均以ViewModel为结尾,并且存放路径为 ViewModels文件夹。

在这里插入图片描述
3、测试ViewModel是否成功绑定
在MainWindow.xmal后台窗体加载事件输出当前窗体绑定的视图文件。设置断点,运行程序,查看变量是否为对应视图文件。
在这里插入图片描述

三、将Prism项目升级为支持模块化编程项目

1、修改启动程序的继承类,将继承 Application 的对象修改为 PrismApplication ,前后端修改如下所示:
在这里插入图片描述
在这里插入图片描述
2、修改完成后直接生成应用程序,提示App未实现两个抽象类,点击Teb 自动实现后修改如下,实现 PrismApplication 接口方法,将主窗体实例化后回传到接口,然后删除前端的启动属性绑定的启动窗体。

在这里插入图片描述
在这里插入图片描述
至此,我们完成了一个WPF+Prism 模块化编程的项目结构。

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

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

相关文章

算法系列--动态规划--特殊的状态表示--分析重复子问题

💕"轻舟已过万重山!"💕 作者:Lvzi 文章主要内容:算法系列–算法系列–动态规划–特殊的状态表示–分析重复子问题 大家好,今天为大家带来的是算法系列--动态规划--特殊的状态表示--分析重复子问题 一.组合总数IV 链接…

蓝桥集训之游戏

蓝桥集训之游戏 核心思想:博弈论 区间dp 设玩家1的最优解为A 玩家2的最优解为B 1的目标就是使A-B最大 2的目标就是使B-A最大 当玩家1取L左端点时 右边子区间结果就是玩家2的最优解B-A 即当前结果为w[L] – (B-A) 当玩家1取R右端点时 左边子区间结果就是玩家2的最…

Mybatis-特殊SQL的执行

1. 模糊查询 在MyBatis中进行模糊查询时,有以下三种常见的实现方式: 1.1. 错误示范 先来个准备操作,并做一个错误示例 根据姓名,模糊查询用户,(x小x) 更新数据表 SQLMapper.java package com.sakurapaid.mybatis3…

Win10 搭建FTP存储服务器站点【超详细教程】

目录 第一步:打开控制面板>程序 第二步:win10左下角搜索IIS并打开 第三步:右键网站,选择添加FTP站点 第四步:添加FTP站点名称 第五步:添加IP地址和端口 第六步:身份验证与授权信息 第…

浅谈Spring体系的理解

浅谈Spring知识体系 Spring Framework架构图Spring家族技术生态全景图XMind汇总 本文不涉及细节,主要回答两个问题: Spring家族技术生态全景图有哪些Spring Framework架构下每个模块有哪些东西,以及部分模块之间的关联关系 Spring Framework架…

C语言操作符详细讲解

前言 本次博客一定会让刚刚学习C语言小白有所收获 本次操作符讲解不仅分类还会有代码示例 好好看 好好学 花上几分钟就可以避免许多坑 1 操作符的基本使用 1.1操作符的分类 按功能分 算术操作符&#xff1a; 、- 、* 、/ 、% 移位操作符: >> << 位操作符…

华为OD机试 - 芯片资源限制(Java 2024 C卷 100分)

华为OD机试 2024C卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷C卷&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;每一题都有详细的答题思路、详细的代码注释、样例测试…

【数据分享】1981-2023年全国各城市逐日、逐月、逐年最高气温(shp格式)

气象数据是我们在各种研究中都会使用到的基础数据&#xff0c;之前我们分享了Excel格式的1981-2023年全国各城市的逐日、逐月、逐年最高气温数据。 好多小伙伴拿到数据后问我们有没有GIS矢量格式的该数据&#xff0c;我们专门对数据进行了处理&#xff0c;转换为了GIS矢量格式…

【git】git使用手册

目录 一 初始化 1.1 账号配置 1.2 ssh生成 1.2.1 配置ssh 1.2.2 测试SSH 1.3 初始化本地仓库并关联远程仓库 二 使用 2.1 上传 2.2 拉取 三 问题 3.1 关联失败 一 初始化 git的安装很简单,下载后大部分进行下一步完成即可----->地址: git工具下载 1.1 账号配置…

金额转换.java

题目&#xff1a; 奖金额转换成大写的七位数 分析&#xff1a;获取每一位数字&#xff0c;将数字转为大写的&#xff0c;数字前面添零&#xff0c;补成七位数&#xff0c;最后依次拼接单位 package text; import java.util.Scanner; public class MoneySwitch {public static v…

Qt/QML编程之路:QPainter与OpenGL的共用(49)

在Qt编程中,有时会有这样一种场景:用OpenGL显示了一个3维立体图,但是想在右下角画一个2D的表格,里面写上几个字。那么这个时候就会出现QPainter与OpenGL共用或者说2D、3D共用。但是问题是调用了QPainter,drawline之后呢,OPenGL的状态被清空了丢失了,3D不显示了。 在Ope…

算法学习——LeetCode力扣动态规划篇5(198. 打家劫舍、213. 打家劫舍 II、337. 打家劫舍 III )

算法学习——LeetCode力扣动态规划篇5 198. 打家劫舍 198. 打家劫舍 - 力扣&#xff08;LeetCode&#xff09; 描述 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统…

Python学习之多线程、多进程

前言: 在了解本章之前&#xff0c;我们先来了解下什么是线程和进程: 在计算机科学中&#xff0c;进程和线程是执行程序的基本单元&#xff0c;它们在操作系统的管理下运作&#xff0c;但它们之间有着本质的区别。理解进程和线程的概念对于进行有效的程序设计和系统管理非常重要…

(C语言)fread与fwrite详解

1. fwrite函数详解 头文件&#xff1a;stdio.h 函数有4个参数&#xff0c;只适用于文件输出流 作用&#xff1b;将从ptr中拿count个大小为size字节的数据以二进制的方式写到文件流中。返回写入成功的数目。 演示 #include <stdio.h> int main() {FILE* pf fopen(&qu…

Ruoyi-Cloud-Plus_使用Docker部署分布式微服务系统_环境准备_001---SpringCloud工作笔记200

1.首先安装docker: 如果以前安装过首先执行: yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine 去卸载docker 2.安装dokcer需要的工具包…

如何使用固定公网地址远程访问内网Axure RP生成的网站原型web页面

文章目录 前言1.在AxureRP中生成HTML文件2.配置IIS服务3.添加防火墙安全策略4.使用cpolar内网穿透实现公网访问4.1 登录cpolar web ui管理界面4.2 启动website隧道4.3 获取公网URL地址4.4. 公网远程访问内网web站点4.5 配置固定二级子域名公网访问内网web站点4.5.1创建一条固定…

GPT提示词分享 —— 智能域名生成器

提示词&#x1f447; 我希望你能充当一个聪明的域名生成器。我将告诉你我的公司或想法是什么&#xff0c;你将根据我的提示回复我一份域名备选清单。你只需回复域名列表&#xff0c;而不是其他。域名应该是最多 7-8 个字母&#xff0c;应该简短但独特&#xff0c;可以是朗朗上口…

WiFiSpoof for Mac wifi地址修改工具

WiFiSpoof for Mac&#xff0c;一款专为Mac用户打造的网络隐私守护神器&#xff0c;让您在畅游互联网的同时&#xff0c;轻松保护个人信息安全。 软件下载&#xff1a;WiFiSpoof for Mac下载 在这个信息爆炸的时代&#xff0c;网络安全问题日益凸显。WiFiSpoof通过伪装MAC地址&…

12.windows Ubuntu 子系统:构建非冗余基因集

上次我们用prodigal对contig进行了ORF&#xff08;开放阅读框&#xff09;预测&#xff0c;可见11.windows ubuntu 子系统 contig ORF&#xff08;开放阅读框&#xff09;预测。-CSDN博客&#xff0c;接下来我们便开始构建非冗余基因集。 构建非冗余基因集有几个重要的原因&…

Redis持久化 RDB AOF

前言 redis的十大类型终于告一段落了,下面我们开始redis持久化新篇章 为啥需要持久化呢? 我们知道redis是挡在mysql前面的带刀侍卫 是在内存中的,假如我们的redis宕机了,难道数据直接冲入mysql??? 这显然是不可能的,mysql肯定扛不住这样的场景,所以我们有了redis持久化策略…