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

一起搭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.mzph.cn/pingmian/48634.shtml

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

相关文章

ANY、ALL 和 SOME关键字的用法

前言 SOME、ANY、ALL是一种逻辑运算符&#xff0c;作用是将子查询返回的单列值的集合与查询的单个值作比较。SOME、ANY、ALL前面需跟比较运算符&#xff08;>&#xff0c;<&#xff0c;>&#xff0c;<&#xff0c;&#xff0c;<>&#xff09;。这里只有当子查…

网络安全入门教程(非常详细)从零基础入门到精通_网路安全 教程

前言 1.入行网络安全这是一条坚持的道路&#xff0c;三分钟的热情可以放弃往下看了。2.多练多想&#xff0c;不要离开了教程什么都不会了&#xff0c;最好看完教程自己独立完成技术方面的开发。3.有时多百度&#xff0c;我们往往都遇不到好心的大神&#xff0c;谁会无聊天天给…

用神经网络求解微分方程

微分方程是物理科学的主角之一&#xff0c;在工程、生物、经济甚至社会科学中都有广泛的应用。粗略地说&#xff0c;它们告诉我们一个量如何随时间变化&#xff08;或其他参数&#xff0c;但通常我们对时间变化感兴趣&#xff09;。我们可以了解人口、股票价格&#xff0c;甚至…

黑龙江等级保护测评深度解析

一、黑龙江等级保护测评概述 黑龙江等级保护测评&#xff08;以下简称“等保测评”&#xff09;是一项针对信息系统安全等级保护的综合性评估活动&#xff0c;旨在确保信息系统符合国家网络安全等级保护制度的要求&#xff0c;保障信息系统的安全稳定运行。 二、等保测评的重…

艺术成分很高的完全自定义的UITabBar(很简单)

引言 在iOS应用开发中&#xff0c;UITabBar是一个非常场景且重要的UI组件。系统为我们提供的UITabBar虽然功能强大&#xff0c;但是在某些情况下&#xff0c;它的标准样式并不能满足我们特定的设计需求&#xff0c;它的灵活性也有一些局限。为了打造更具个性化好的用户友好的交…

显卡驱动程序下载失败的原因及对策

在数字时代&#xff0c;显卡作为电脑的心脏部件之一&#xff0c;其驱动程序的正常运行是保证图形处理性能的关键。然而&#xff0c;不少用户在尝试下载显卡驱动程序时遭遇失败&#xff0c;这不仅影响了日常使用体验&#xff0c;还可能埋下系统不稳定的风险。本文将深入探讨显卡…

黑龙江网络安全等级保护测评策略概述

一、简介 黑龙江省网络安全等级保护测评策略是为了保障信息系统安全稳定运行&#xff0c;根据《网络安全法》和相关国家标准制定的综合性安全评估和加固过程。该策略不仅要求企业和机构明确自身信息系统的安全等级&#xff0c;还指导其实施相应的技术防护与管理措施&#xff0…

算法学习4——动态规划

动态规划&#xff08;Dynamic Programming&#xff0c;简称DP&#xff09;是一种用于解决具有重叠子问题和最优子结构性质的问题的算法设计技术。它通过将复杂问题分解为更小的子问题&#xff0c;并保存子问题的解来避免重复计算&#xff0c;从而提高算法的效率。 基本思想 动…

Mamba中的Mamba:在标记化Mamba模型中的集中式Mamba跨扫描高光谱图像分类

摘要 https://arxiv.org/pdf/2405.12003 高光谱图像&#xff08;HSI&#xff09;分类在遥感&#xff08;RS&#xff09;领域至关重要&#xff0c;尤其是随着深度学习技术的不断进步。顺序模型&#xff0c;如循环神经网络&#xff08;RNNs&#xff09;和Transformer&#xff0…

接近50个实用编程相关学习资源网站

Date: 2024.07.17 09:45:10 author: lijianzhan 编程语言以及编程相关工具等实用性官方文档网站 C语言文档&#xff1a;https://learn.microsoft.com/zh-cn/cpp/c-languageMicrosoft C、C和汇编程序文档&#xff1a;https://learn.microsoft.com/zh-cn/cppJAVA官方文档&#…

java题目之数字加密以及如何解密

public class Main6 {public static void main(String[] args) {// 某系统的数字密码&#xff08;大于0&#xff09;&#xff0c;比如1983&#xff0c;采用加密方式进行传输//定义了一个静态数组int []arr{1,9,8,3};//1.加密//先给每位数加上5for (int i 0; i <arr.length …

随机变量的数学期望

目录 简介 基本概念 数学期望的定义 数学期望的性质 数学期望的应用 计算实例 数学期望在解决哪些具体问题时最为有效&#xff1f; 如何计算两个或多个随机变量的组合概率及其期望值&#xff1f; 1. 计算组合概率 2. 计算期望值 当涉及到两个或多个随机变量的组合时&…

Hadoop基础组件介绍!

Hadoop是一个由Apache基金会所开发的分布式系统基础架构&#xff0c;Hadoop生态系统已经远远超出了这些基本组件&#xff0c;现在包括了多种组件和技术&#xff0c;详情介绍如下&#xff1a; HDFS&#xff08;Hadoop Distributed File System&#xff09; HDFS是Hadoop的核心组…

git实操之线上分支合并

线上分支合并 【 1 】本地dev分支合并到本地master上 # 本地dev分支合并到本地master上# 远程(线上)分支合并# 本地dev分支合并到本地master上# 远程(线上)分支合并#####本地和线上分支同步################ #### 远程创建分支&#xff0c;拉取到本地####-远程创建分支&#…

自定义Bean转换工具类

BeanConvertor工具类&#xff1a;简化Java对象转换的利器 在Java开发中,我们经常需要在不同的对象之间转换数据。这可能是因为我们需要将数据从一个层(如数据访问层)转移到另一个层(如服务层或表示层),或者是因为我们需要将外部API的数据结构转换为我们的内部数据结构。这种转…

企业级-PDF图片水印

作者&#xff1a;fyupeng 技术专栏&#xff1a;☞ https://github.com/fyupeng 项目地址&#xff1a;☞ https://github.com/fyupeng/distributed-blog-system-api 留给读者 遇到签名&#xff0c;往往很无奈签名的位置、大小。 一、介绍 直接提供PDF路径和图片路径&#xff0…

RK RGA _MMU unsupported memory larger then 4G!问题解决

使用RGA程序,长时间运行的过程中出现了rga_mm: RGA_MMU unsupported memory larger than 4G! rga_mm: RGA_MMU unsupported memory larger than 4G! rga_mm: scheduler core[4] unsupported mm_flag[0x8]! rga_mm: rga_mm_map_buffer map virtual address error! rga_mm: job…

华为云.云日志服务LTS及其基本使用

云计算 云日志服务LTS及其基本使用 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_28550…

2024最新版虚拟便携空调小程序源码 支持流量主切换空调型号

产品截图 部分源代码展示 urls.js Object.defineProperty(exports, "__esModule", {value: !0 }), exports.default ["9c5f1fa582bee88300ffb7e28dce8b68_3188_128_128.png", "E-116154b04e91de689fb1c4ae99266dff_960.svg", "573eee719…