WPF -> MVVM

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博客

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

man命令的作用

man命令是Linux操作系统中一个非常实用的命令,它用于查看命令的手册页面,帮助用户了解特定命令的用法、选项和参数。这不仅对新用户在学习如何使用新命令时很有帮助,也方便了经验丰富的用户快速查找命令的详细信息。以下是具体介绍&#xff1…

基于java18多端展示+ idea hbuilder+ mysql家政预约上门服务系统,源码交付,支持二次开发

基于java18多端展示 idea hbuilder mysql家政预约上门服务系统,源码交付,支持二次开发 家政预约上门系统是一种通过互联网或移动应用平台,为用户提供在线预约、下单、支付和评价家政服务的系统。该系统整合了家政服务资源,使用户能…

LeetCode 算法:无重复字符的最长子串c++

原题链接🔗:无重复字符的最长子串 难度:中等⭐️⭐️ 题目 给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度。 示例 1: 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所…

谷歌浏览器的平替,内置开挂神器,我已爱不释手!

油猴浏览器正式版是一款基于谷歌Chromium源码开发的浏览器,它集成了集成了强大的油猴扩展(Tampermonkey),使得用户可以轻松安装各种脚本,从而增强网页浏览体验。提供了一个更加个性化和高效的浏览体验。 油猴扩展&…

【Python网络爬虫】详解python爬虫中URL资源抓取

🔗 运行环境:PYTHON 🚩 撰写作者:左手の明天 🥇 精选专栏:《python》 🔥 推荐专栏:《算法研究》 #### 防伪水印——左手の明天 #### 💗 大家好🤗&#x1f91…

CS和msf的权限传递,利用mimikatz抓取win10明文密码

一、Cobaltstrike的安装 http://t.csdnimg.cn/yhZin 安装CobaltStrike,浏览博主的上篇文章即可!!! 这里我在自己的本机win11上执行了Client去连接kali中的Server端,直接执行.cmd文件即可!!&…

AI智能语音机器人系统如何对接科大讯飞接口

关于AI语音机器人的介绍有很多,但是由于商业化,没有一个能真正说明白的,当然,我们搭建的AI智能机器人系统也是商业化的,毕竟业务是做这方面的,但是价格绝对是公道的,废话不多说了,我…

C++vector及其实现

第一个参数是类型(可以是自定义也可以是内置类型) 相当于生成一个该类型的数组 allocator是空间配置器 遍历 1.下标遍历 2.迭代器遍历 3.范围for 对象访问 有名对象访问 匿名对象访问 隐式类型转换 成员函数 sort 使用sort需要包含头文件algorithm eg. sort的使用非…

QA 未能打开位于 D:/Computer999/Computer999.vbox 的虚拟电脑

前言 未能打开位于 xxx/Computer999.vbox 的虚拟电脑,并提示E_INVALIDARG (0X80070057),是最常见的一个错误,下面是解决办法。 内容 1、提示下面的错误,注册Computer999失败: 未能打开位于 D:/Computer999/Compute…

【刷题(15】普通数组

一 普通数组基础 首先&#xff0c;我们根据下图先了解一下什么是前缀和。 既然我们明白了前缀和是怎么回事&#xff0c;那我们就来看一下我们该怎么输入 先给出答案&#xff0c;然后再给出分析。 答案&#xff1a; for (int i 1; i < n; i ){cin >> a[i];s[i] s…

JVM之垃圾回收面试总结

文章目录 1.GC概述1.1 什么是垃圾1.2 为什么需要GC&#xff1f;1.3 早期垃圾回收1.4 Java垃圾回收机制1.5 评估GC的性能指标 2.垃圾回收相关算法2.1 垃圾标记阶段的算法2.1.1 引用计数算法(Java没有使用)2.1.2 可达性分析算法 2.2 垃圾清除阶段的算法2.2.1 标记-清除(Mark-Swee…

今在推特发一个推特立马推特账户被删除了

咨询 Google Contacts 是如何 获取我的苹果手机通讯录的电话号码清单的&#xff1f;不到一分钟&#xff0c;我的账户之间被删除了&#xff0c;比停用、冻结还令人可怕。 立马推特账户被删除了。

阿里云搭建物联网平台+MQTT.fx接入阿里云

文章目录 本篇介绍一、阿里云物联网平台搭建二 、MQTT客户端接入阿里云物联网平台总结 本篇介绍 本篇搭建了阿里云物联网平台&#xff0c;使用MQTT.fx接入阿里云&#xff0c;上传温湿度数据 使用到的软件&#xff1a;阿里云、MQTT.fx 一、阿里云物联网平台搭建 首先创建一个物…

Codeforces Round 949 (Div. 2)(A,B题解)

这场真是给我打的汗流浃背了&#xff0c;这场真的巨难&#xff08;可能是因为我二进制根本就没学好的原因吧&#xff09; 反正总共就搞了两道题&#xff0c;第一道题注重于思维&#xff0c;第二道题纯二进制&#xff0c;第三道题看着也是二进制&#xff08;最后时间不够了&…

【Microelectronic Systems】

1 background&introduction 2 analog to Digital Conversion 3 Digital to Anolog Conversion 4 introduction to CMOS outlook ! introduction to semiconductors siemens,西门子 properties of semiconductors types of semiconductors $ PN junction 5 Mathematic s…

Llama(二):Open WebUI作为前端界面,使用本机的llama3

目录 背景 Open WebUI是什么 工程能力特性 产品功能特性 用户体验特性 Open WebUI安装并使用 背景 Mac M1芯片&#xff0c;16G 内存 llama3 8B的部署参考Llama&#xff08;一&#xff09;&#xff1a;Mac M1芯片运行Llama3-CSDN博客在Mac M1 16G内存环境中&#xff0c;…

【数据结构】二叉树的层序遍历~动画超详解

目录 1 什么是层序遍历2 二叉树层序遍历的基本思路3 二叉树层序遍历的实现 1 什么是层序遍历 我们从字面意思就明白,所谓层序,就是一层一层按顺序去遍历一个二叉树,这和我们之前了解的按前中后序遍历方式完全不同 比方说这颗二叉树: 前序遍历: 层序遍历: 2 二叉树层序遍历的…

Zabbix安装:构建高效可靠的Zabbix监控系统

目录 引言 一、zabbix基本介绍 &#xff08;一&#xff09;什么是zabbix &#xff08;二&#xff09;zabbix结构体系 &#xff08;三&#xff09;zabbix监控对象 &#xff08;四&#xff09;zabbix进程 &#xff08;五&#xff09;zabbix监控模式 &#xff08;六&#…

VRTK4教程 二:基本追踪

文章目录 untiyXR和UnityXRPluginFramwork使用方法&#xff1a; TrackedAlias使用方法使用技巧 untiyXR和UnityXRPluginFramwork 这两个用于跟踪头盔位置&#xff0c;其中UnityXR使用的是旧版API&#xff0c;另一个是新版API&#xff0c;两个我我们选一个即可 使用方法&#…

git使用流程

1.下载git 搜索下载 2.注册github账号&#xff08;打开爬墙工具&#xff09; 创建一个仓库 3.配置邮箱和密码 4.所以找一个文件夹 鼠标右键 选择 open Git Bash here&#xff08;当前文件夹下打开命令行&#xff09; 输入命令 配置用户名和邮箱 5.将建的仓库克隆下来 …