一起搭WPF界面之MVVM架构的简单搭建

news2024/9/20 21:36:59

一起搭WPF界面之MVVM架构的简单搭建

  • 1 前言
  • 2 创建项目
    • 2.1新建项目
    • 2.2WPF
    • 2.3创建完成
  • 3 MVVM划分
    • 3.1 划分逻辑
    • 3.2文件夹创建
    • 3.3文件创建
      • 3.3.1 Views——可在主界面的基础上,划分多个用户控件模块
      • 3.3.2 ViewModels——创建数据结构存放的cs文件
      • 3.3.3 Models——创建处理数据业务逻辑的cs文件
  • 4 总结


1 前言

最近做项目严格执行MVVM模式开发,即Model-View-ViewModel

  • Model(模型):定义应用程序的数据结构和业务逻辑。
  • View(视图):这是WPF应用程序的UI部分,使用XAML来定义。视图不包含业务逻辑,只负责显示数据和接收用户输入。可以将数据与后台进行剥离,当出现多个任务时,可以考虑将界面划分为多个模块,然后后台写后台的程序,最后将后台数据与前端绑定即可。
  • ViewModel/Controller(控制器):在WPF中,控制器的角色通常由ViewModel或代码后台(Code-behind)来承担。控制器负责处理用户输入、更新模型和视图。

2 创建项目

2.1新建项目

基于WPF应用开发,选择对应的.Net Framework进行窗体应用开发。
在这里插入图片描述

2.2WPF

定义项目名称,选择目标框架。通常来说高级别的框架优化比较好,但是使用了高级别的框架再移植到低级别的框架去使用时可能会存在一定的风险。
在这里插入图片描述

2.3创建完成

创建完成后,会自动生成一个新的界面窗体MainWindow.xaml,可以开始大展拳脚了!
在这里插入图片描述

3 MVVM划分

3.1 划分逻辑

以MainView为主界面进行网格化功能不同而划分,MainViewModel中可以切换不同界面在主界面上显示。每个不同的子界面可以独立进行界面设计与数据逻辑处理,不影响主界面的后台逻辑绑定。
在大型项目中,可以模块化将项目划分给不同的人进行代码逻辑设计,分工清晰。
在这里插入图片描述

3.2文件夹创建

项目建立后,通过文章最初提到的MVVM的模式进行文件夹的划分,为了后续开发划分进行归纳,更好理解MVVM的使用意义!
可以参考一下命名方式进行命名

  • Models内放入cs文件,常用于处理数据和业务逻辑。
  • ViewModels内放入cs文件,常用于调用Models文件,更新用户数据。
  • Views内设计界面。

在这里插入图片描述

3.3文件创建

手把手教你,创建并完成文件划分!

3.3.1 Views——可在主界面的基础上,划分多个用户控件模块

项目本身就有自动生成MainWindow.xaml,将其放置在Views中。
在这里插入图片描述

  • 更改前:

在这里插入图片描述

在这里插入图片描述

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

  • 更改后:

在这里插入图片描述
在这里插入图片描述
MainWindow.xaml移动后,需要将对应的地址进行调整。
调整过后MainWinodow设计器可能还无法显示,请关掉项目,再重新启动!

3.3.2 ViewModels——创建数据结构存放的cs文件

在这里插入图片描述

3.3.3 Models——创建处理数据业务逻辑的cs文件

在这里插入图片描述


4 总结

记录。

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

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

相关文章

在 VM 虚拟机中安装 openEuler + 桌面

在 VM 虚拟机中安装 openEuler 1 介绍2 步骤语言Root 账户安装位置网络和主机名自动检索到【推荐】手动配置网络 软件选择安装完成登录测试网络curl ip / ping ipip link show / ip a如网络不通,可检查网卡状态和dns配置 安装命令设置以图形界面的方式启动【dde】第…

sql-libs通关详解

1-4关 1.第一关 我们输入?id1 看回显,通过回显来判断是否存在注入,以及用什么方式进行注入,直接上图 可以根据结果指定是字符型且存在sql注入漏洞。因为该页面存在回显,所以我们可以使用联合查询。联合查询原理简单说一下&…

PyTorch之ResNet101模型与示例

【图书推荐】《PyTorch深度学习与企业级项目实战》-CSDN博客 ResNet101模型 ResNet101是一种深度残差网络,它是ResNet系列中的一种,下面详解ResNet101网络结构。 ResNet101网络结构中有101层,其中第一层是77的卷积层,然后是4个…

Nacos 配置中心配置加载源码分析

前言:上一篇我们分析 Nacos 配置中心服务端源码的时候,多次看到有去读取本地配置文件,那本地配置文件是何时加载的?本篇我们来进行详细分析。 Nacos 系列文章传送门: Nacos 初步认识和 Nacos 部署细节 Nacos 配置管…

https改造-python https 改造

文章目录 前言https改造-python https 改造1.1. https 配置信任库2. 客户端带证书https发送,、服务端关闭主机、ip验证 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。   而且听说点赞的人每…

遗传算法与深度学习实战——进化深度学习

遗传算法与深度学习实战——进化深度学习 0. 前言1. 进化深度学习1.1 进化深度学习简介1.2 进化计算简介 2. 进化深度学习应用场景3. 深度学习优化3.1 优化网络体系结构 4. 通过自动机器学习进行优化4.1 自动机器学习简介4.2 AutoML 工具 5. 进化深度学习应用5.1 模型选择&…

Java给定一些元素随机从中选择一个

文章目录 代码实现java.util.Random类实现随机取数(推荐)java.util.Collections实现(推荐)Java 8 Stream流实现(不推荐) 完整代码参考(含测试数据) 在Java中,要从给定的数据集合中随机选择一个元素,我们很容易想到可以使用 java.…

【Stable Diffusion】(基础篇四)—— 模型

模型 本系列博客笔记主要参考B站nenly同学的视频教程,传送门:B站第一套系统的AI绘画课!零基础学会Stable Diffusion,这绝对是你看过的最容易上手的AI绘画教程 | SD WebUI 保姆级攻略_哔哩哔哩_bilibili 本文主要讲解如何下载和使…

C++【泛型编程】【string类常用接口】学习

目录 泛型编程 推演实例化 显示实例化 类模板 类模板的声明和定义分离 STL string string的构造和拷贝构造 选取特定字符串拷贝 解析: 关于npos的解析 验证 从一个字符串中拷贝前几个字符 解析: 注意: 验证: size…

AI应用行业落地100例 | 移民公司Envoy Global引入AI员工赋能,效率飙升80%,开启服务新篇章

《AI应用行业落地100例》专题汇集了人工智能技术在金融、医疗、教育、制造等多个关键行业中的100个实际应用案例,深入剖析了AI如何助力行业创新、提升效率,并预测了技术发展趋势,旨在为行业决策者和创新者提供宝贵的洞察和启发。 Envoy Globa…

Pytorch使用教学2-Tensor的维度

在PyTorch使用的过程中,维度转换一定少不了。而PyTorch中有多种维度形变的方法,我们该在什么场景下使用什么方法呢? 本小节我们使用的张量如下: # 一维向量 t1 torch.tensor((1, 2)) # 二维向量 t2 torch.tensor([[1, 2, 3], …

【Unity PC端打包exe封装一个并添加安装引导】

Unity PC端打包exe封装一个并添加安装引导 比特虫在线制作ico图标ico图标转换工具 选中打包出来的所有文件和ico图标 右键 使用RAR软件 添加到压缩文件 两个名称要相同 设置完点击确认等待压缩完成 然后就可以使用 Smart Install Maker制作引导安装程序了

Matlab进阶绘图第64期—三维分组针状图

三维分组针状图可以看作是三维分组散点图的升级,能够直观地展示各组分、各元素的位置、对比情况。 由于Matlab中未收录三维分组针状图的绘制函数,因此需要大家自行设法解决。 本文使用自制的groupedstem3小工具进行三维分组针状图的绘制,先…

数据结构之深入理解简单选择排序:原理、实现与示例(C,C++)

文章目录 一、简单选择排序原理二、C/C代码实现总结: 在计算机科学中,排序算法是一种非常基础且重要的算法。简单选择排序(Selection Sort)作为其中的一种,因其实现简单、易于理解而受到许多初学者的喜爱。本文将详细介…

Maven概述

目录 1.Maven简介 2.Maven开发环境搭建 2.1下载Maven服务器 2.2安装,配置Maven 1.配置本地仓库地址 2.配置阿里云镜像地址 2.3在idea中配置maven 2.4在idea中创建maven项目 3.pom.xml配置 1.项目基本信息 2.依赖信息 3.构建信息 4.Maven命令 5.打包Jav…

华杉研发九学习日记17 正则表达式 异常

华杉研发九学习日记17 一,正则表达式 ^ $ 作用: 测试字符串内的模式(匹配) 例如,可以测试输入字符串,以查看字符串内是否出现电话号码模式或信用卡号码模式。这称为数据验证. 替换文本(替换》 可以使用正则表达式来…

知识工程经典语言 PROLOG基本介绍

定义 PROLOG语言是一种基于Horn子句的逻辑型程序设计语言&#xff0c;也是一种陈述性语言。 PROLOG的语句 PROLOG语言仅有三种语句&#xff0c;称为事实、规则和问题。 事实 格式 <谓词名>(<项表>). 其中谓词名是以小写英文字母开头的字母、数字、下划线等组成的…

使用js实现常见的数据结构---链表,队列,栈,树

注&#xff1a;本文只作为数据结构的实现参考和个人理解 链表 链表是由多个节点&#xff08;node&#xff09;连接起来的&#xff0c;每个节点包含了一些存储的数据和指向下一个节点的指针&#xff0c; 链表&#xff1a;多个连续的节点构成&#xff0c;节点&#xff1a;包含一…

spring-boot3.x整合Swagger 3 (OpenAPI 3) +knife4j

1.简介 OpenAPI阶段的Swagger也被称为Swagger 3.0。在Swagger 2.0后&#xff0c;Swagger规范正式更名为OpenAPI规范&#xff0c;并且根据OpenAPI规范的版本号进行了更新。因此&#xff0c;Swagger 3.0对应的就是OpenAPI 3.0版本&#xff0c;它是Swagger在OpenAPI阶段推出的一个…

大数据-47 Redis 缓存过期 淘汰删除策略 LRU LFU 基础概念

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…