WPF -> MVVM

news2025/1/16 20:05:47

1.1安装MVV MLight

  1. 打开 Visual Studio 2022。

  2. 在顶部菜单栏中选择“工具” -> “NuGet 包管理器” -> “程序包管理器控制台”。

  3. 在控制台中输入以下命令,并按回车键运行:

Install-Package MvvmLightLibsStd10

     4.等待安装完成后,你就可以在项目中使用 MVVMLight 了。

1. 2:图示安装。

1.3:MvvmLight 和MvvmLightlib区别

MvvmLight 和 MvvmLightLib 是由 Laurent Bugnion 创建的两个不同的 MVVM 框架。

MvvmLight 是一个轻量级的 MVVM(Model-View-ViewModel)框架,它提供了一些基本功能来帮助开发人员实现 MVVM 模式。MvvmLight 框架可以在多个平台(包括 WPF、Windows 10 UWP、Xamarin 等)上使用,并且易于扩展和自定义。

MvvmLightLib 是 MvvmLight 框架的扩展版本,它包含了更多的功能和工具,比如深度集成的 IOC 容器 SimpleIoc、Messenger 用于 ViewModel 间通信、设计时数据支持等。MvvmLightLib 更适合于大型项目和需要更丰富功能集的应用程序。

因此,MvvmLight 是一个轻量级的框架,而 MvvmLightLib 包含更多的功能和工具,可以满足更复杂的应用程序需求。

2.WPF MVVM项目结构

在 WPF MVVM 项目中,通常采用以下的结构:

Solution
├─ ProjectName.Core         # 项目核心层,定义模型和服务等
├─ ProjectName.Infrastructure # 基础设施层,包含与数据访问相关的代码
├─ ProjectName.Modules       # 模块层,按功能划分为不同的模块
├─ ProjectName.Resources     # 资源文件夹,包含图像、样式表等资源
├─ ProjectName.Services      # 服务层,包含与业务逻辑相关的代码
├─ ProjectName.Tests         # 测试项目
└─ ProjectName.UI            # UI 层,包含视图和视图模型
    ├─ Views                 # 视图文件夹,包含 XAML 文件
    └─ ViewModels            # 视图模型文件夹,包含视图模型代码

其中,ProjectName.UI 是项目的界面层,包括视图和视图模型。在 Views 文件夹中,可以按照功能或者模块来组织视图文件。在 ViewModels 文件夹中,可以按照视图文件来组织视图模型文件。

ProjectName.Core 层包含了项目的核心代码。这一层通常包括模型、枚举和服务等代码。

ProjectName.Infrastructure 层是基础设施层,包含了与数据访问相关的代码。这一层通常使用 Repository 模式来封装数据访问代码。

ProjectName.Modules 层是模块层,按照功能或者模块来划分不同的模块。每个模块可以包含视图、视图模型、模型和服务等相关代码。

ProjectName.Resources 层包含了项目的资源文件,包括图像、样式表等资源。

ProjectName.Services 层是服务层,包含了与业务逻辑相关的代码。这一层通常使用依赖注入来管理服务。

ProjectName.Tests 层是测试项目,用于编写单元测试和集成测试。

这样的结构可以有效地组织项目代码,使得代码清晰可读,易于维护和扩展。

 3.WPF MVVM模式和WPF Prism区别

WPF MVVM模式和WPF Prism是两种不同的开发模式,它们之间有以下区别:

WPF MVVM模式

  • MVVM代表Model-View-ViewModel(模型-视图-视图模型),是一种用于构建WPF应用的架构设计模式。
  • MVVM通过将用户界面与业务逻辑分离,提高了代码的可维护性、可测试性和可扩展性。
  • 在MVVM中,视图(View)定义UI元素,视图模型(ViewModel)管理视图所需的数据和行为,而模型(Model)表示应用程序的状态和业务逻辑。

WPF Prism

  • Prism是一个基于WPF和Silverlight的框架,旨在帮助开发人员构建具有复杂用户界面的企业级应用程序。
  • Prism采用了一系列最佳实践和设计模式,包括MVVM、依赖注入等,以提供更好的代码结构和灵活性。
  • 与MVVM不同,Prism还提供了一组工具和服务来简化应用程序的开发,例如事件聚合器、导航框架、模块化等。

总的来说,WPF MVVM模式和WPF Prism都是在WPF应用程序开发中使用的重要概念。MVVM模式强调如何将界面与业务逻辑分离,而Prism是一个更全面的框架,提供了额外的工具和服务来简化开发过程。

 WPF MVVM增删改查案例

https://download.csdn.net/download/caoyanchao1/87704896

项目知识:

1.RelayCommand 是一种在C#中使用的命令模式实现,它可以将UI元素的事件与执行代码的动作联系起来。通常用于MVVM架构中绑定到WPF和UWP应用程序中。

2.RelativeSource属性用于在XAML中绑定到目标元素的某些特定属性。相对源属性主要用于动态绑定的场景,其中目标元素的位置可能会更改或需要根据其他条件更改绑定。通过RelativeSource属性,可以引用目标元素的类、父级、祖先等。

使用RelativeSource属性时,必须指定Mode属性,以确定如何定位相对源。例如,FindAncestor选项可用于查找父元素并绑定到其属性。

3.ObservableCollection 是 C# 中的一个泛型集合类,它继承自 System.Collections.ObjectModel.Collection 类。与普通的 Collection 不同,ObservableCollection 可以在集合发生变化时自动触发事件通知其他对象更改。

简单来说,ObservableCollection 可以让开发者方便地在集合的项目增加、删除或修改时,自动地通知 UI 组件和其他相关的对象进行更新。这也是它常被用于数据绑定的原因之一

参考

走进WPF之MVVM完整案例_wpf示例_公子小六的博客-CSDN博客

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

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

相关文章

汇编:调用Win32 API

在32位汇编程序中使用 Win32 API 是很常见的,特别是在开发 Windows 应用程序时调用的频率很高,Win32 API 提供了访问 Windows 操作系统功能的接口,包括窗口、消息处理、文件操作、网络通信等等。以下是使用 Win32 API 的一般步骤:…

Vue3项目练习详细步骤(第二部分:主页面搭建)

主页面搭建 页面主体结构 路由 子路由 主页面搭建 页面主体结构 在vuews目录下新建Layout.vue文件 主页面内容主体代码 <script setup> import {Management,Promotion,UserFilled,User,Crop,EditPen,SwitchButton,CaretBottom } from element-plus/icons-vue imp…

在线建站流程分析

建站流程是指通过互联网创建一个个人或企业网站的过程。随着互联网的发展&#xff0c;越来越多的人和机构开始意识到网络的重要性&#xff0c;建站成为一种常见的行为。在线建站的流程一般包括以下几个步骤。 首先&#xff0c;选择一个合适的建站平台。目前&#xff0c;有很多在…

动态规划6:63. 不同路径 II

动态规划解题步骤&#xff1a; 1.确定状态表示&#xff1a;dp[i]是什么 2.确定状态转移方程&#xff1a;dp[i]等于什么 3.初始化&#xff1a;确保状态转移方程不越界 4.确定填表顺序&#xff1a;根据状态转移方程即可确定填表顺序 5.确定返回值 题解&#xff1a;63. 不同…

C++ primer例子1实现

问题 代码 Sales_item.h #include<iostream> #include<string> class Sales_item {public:Sales_item(){};Sales_item(std::string insid, int num, double price);friend std::istream& operator>>(std::istream& is, Sales_item& item);frie…

SpringBoot: 读取项目的Git版本号

在开发项目的时候&#xff0c;我们经常会想要拿到线上运行的程序版本&#xff0c;以确定程序是否正确发布。Spring Boot提供了这样的能力支持。这个能力的核心组件是3个: Maven插件git-commit-id-maven-plugin&#xff0c;用于生成.properties文件&#xff0c;里边包含git的各…

登录通用解决方案 —— 第三方登录处理

目录 01: 前言 02: 第三方平台登录解决方案流程大解析 03: QQ 开放平台流程大解析 04: QQ 登录对接流程&#xff1a;获取 QQ 用户信息 05: QQ 登录对接流程&#xff1a;跨页面信息传输 06: QQ 登录对接流程&#xff1a;认证是否已注册&#xff0c;完成 QQ …

文件同步软件免费下载

在数字化时代&#xff0c;数据已成为我们生活和工作中不可或缺的一部分。无论是个人用户还是企业团队&#xff0c;都需要一种高效、便捷的方式来管理和同步数据。文件同步软件应运而生&#xff0c;它能够帮助我们轻松实现数据的实时更新和共享。本文将为大家介绍几款优秀的文件…

下载ubuntu22.04

建议使用&#xff1a;清华源镜像 官网下载比较慢Ubuntu 22.04.4 LTS (Jammy Jellyfish) 打开清华源向下翻 然后找到22.04 下载完成&#xff1a;

计算机网络 —— 数据链路层(无线局域网)

计算机网络 —— 数据链路层&#xff08;无线局域网&#xff09; 什么是无线局域网IEEE 802.11主要标准及其特点&#xff1a; 802.11的MAC帧样式 我们来看看无线局域网&#xff1a; 什么是无线局域网 无线局域网&#xff08;Wireless Local Area Network&#xff0c;简称WLAN…

学生成绩管理系统(大一大作业)

功能 实现添加&#xff0c;排序&#xff0c;修改&#xff0c;保存等功能 库函数 #include<stdio.h> #include<stdlib.h> #include<windows.h> #include<string.h> 头文件 #define functioncreate(major) void major##compare(mana mn){\int i,j,s…

计算机网络 ——数据链路层(广域网)

计算机网络 —— 广域网 什么是广域网PPP协议PPP协议的三个部分PPP协议的帧格式 HDLC协议HDLC的站HDLC的帧样式 PPP和HDLC的异同 我们今天来看广域网。 什么是广域网 广域网&#xff08;Wide Area Network&#xff0c;简称WAN&#xff09;是一种地理覆盖范围广泛的计算机网络…

mkfs.ubifs -c 计算工具

mkfs.ubifs -c 输入的logical erase block count,是指除掉ubi文件系统自身管理和坏块处理后的逻辑可擦除最大块数。 参考信息如下&#xff1a; logical erase block count 计算工具&#xff0c;实现代码如下&#xff1a; #!/usr/bin/python # -*- coding: UTF-8 -*-import os…

【AI大模型】基于Langchain和Openai借口实现英文翻译中文应用

&#x1f680; 作者 &#xff1a;“大数据小禅” &#x1f680; 文章简介 &#xff1a;本专栏后续将持续更新大模型相关文章&#xff0c;从开发到微调到应用&#xff0c;需要下载好的模型包可私。 &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac; 目…

智慧城市的规划与实施:科技引领城市运行效率新飞跃

随着信息技术的飞速发展&#xff0c;智慧城市的构想正逐步成为现实。作为地理信息与遥感领域的研究者&#xff0c;我深知在这一转型过程中&#xff0c;技术的创新与应用是提升城市运行效率的关键。本文旨在探讨如何利用地理信息系统&#xff08;GIS&#xff09;、遥感技术、大数…

【深度学习入门篇一】阿里云服务器(不需要配环境直接上手跟学代码)

前言 博主刚刚开始学深度学习&#xff0c;配环境配的心力交瘁&#xff0c;一塌糊涂&#xff0c;不想配环境的刚入门的同伴们可以直接选择阿里云服务器 阿里云天池实验室&#xff0c;在入门阶段跑个小项目完全没有问题&#xff0c;不要自己傻傻的在那配环境配了半天还不匹配&a…

Win11中Yolo V10安装过程记录

1. 配置Anaconda环境&#xff1a; conda create -n yolov10 python3.9 conda activate yolov10 pip install -r requirements.txt pip install -e . 这里由于torch2.0.1太慢&#xff0c;单独用pytorch官网安装流程&#xff08;选择支持GPU版本&#xff09;&#xff1a; con…

dvwa靶场的下载、配置

目录 下载 配置 连接数据库 搭建网站&#xff08;可选&#xff09; 配置靶场 下载 百度网盘链接&#xff1a;https://pan.baidu.com/s/1oK2UzKFxIIPQkhz6hD8WFQ?pwdpbb2 提取码&#xff1a;pbb2 迅雷链接&#xff1a;https://pan.xunlei.com/s/VNzHo9gXgbsk5E8tcx6Yek…

Llama模型家族之RLAIF 基于 AI 反馈的强化学习(一)

LlaMA 3 系列博客 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;一&#xff09; 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;二&#xff09; 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;三&#xff09; 基于 LlaMA…

表达式求值中的“整型提升”概念

一.基本原理和概念 如&#xff1a;代码 char a&#xff0c;b&#xff0c;c &#xff1b; a b c &#xff1b; 该代码在计算的时候就会先将 b 和 c 提升为 int 类型进行加法后&#xff0c;再将数据进行截断存放在内存存放变量 a 的空间中。 &#xff08;1&#xff09;提升和截…