WPF学习笔记

1.学习历程

1.1 起步阶段

刚开始学C#,由于不太了解整个体系,陆陆续续发现了响应的框架结构。整理起来大概的学习路径是
1)C#基础知识
2)wpf知识点
3)mvvm思想架构,主要目的还是为了前端和后台逻辑解耦。有点类似于java的dao,service,controller分层一样。
关于mvvm框架,又陆陆续续发现了一些新大陆
刚开始自己自定义mvvm框架,然后又到MvvmLight。后来微软推出了Microsoft.Toolkit.Mvvm。
再后来又出现了CommunityToolkit.Mvvm,还有使用于大型应用开发的Prism。
m=>model 用来定义实体类
v=>view 用来定义视图,前端展示的界面
vm=>viewModel 用来连接 view和model的桥梁,会在viewModel中定义一些需要在view中用到的字段,但是不属于Model的实体的信息。

关于MvvmLight

已经过时,被Microsoft.Toolkit.Mvvm取代。我下载的是VS2022,在NuGet已经找不到了(刚开始不会弄,后来可以找到,需要自己配置NuGet的地址)。

关于Microsoft.Toolkit.Mvvm

已经过时,停止更新。一发布就是版本7。两大特性RelayCommand和Messenger。
延续了MVVMLight的风格,是一个轻量级的组件,而且它基于.NET Standard 2.0,可用于UWP, WinForms, WPF, Xamarin, Uno等多个平台,被CommunityToolkit.Mvvm取代

关于CommunityToolkit.Mvvm(在使用)

一发布就是版本8,两大特性RelayCommand和Messenger。
延续了MVVMLight的风格,所有可用的 API 都不依赖于任何特定的运行时或框架,因此所有.NET开发人员都可以使用它们。
这些库是从 .NET Standard 2.0 到 .NET 6 的多目标库,所以它们既可以支持尽可能多的平台,又可以在与较新的运行时一起使用时进行优化以获得最佳性能。
主要应该代码生成器的功能简化代码(CommunityToolkit工具包提供了一系列可重用实现,旨在简化各种 .NET 框架的常见开发任务,应用大量的特性来简化代码编写。

关于Prism8.0(在使用)

主要开发大型的应用程序

1.2 认知阶段

刚开始学习,直接从项目模仿入手,也没去具体学C#和WPF,看的是2.4中微软系列技术教程(个人)的个人记事本项目上手的。
当时很多懵逼的知识点。但是当跟着敲完以后,发现又学到了好多一样。
但是发现有几个很大的问题。Prism做出来的一个简单的记事本,跑起来特别卡,而且打包后体积特别大。
想想win系统上面的记事本,很小很小,打开占用内存就5m多。
网上看到的小的项目比较少,大部分都是大型的项目,不适合练手。
可以在csdn搜索关键词’wpf实现’找到一些比较实用的博客。

1.3 巩固阶段

1.4 项目进阶

2. 学习课程线路图

c#基础 -> wpf -> mvvmlight或者prism -> 项目实战 -> 自己开发

黑马.net全套(14期)
https://www.bilibili.com/video/BV12t411P7fE/?spm_id_from=333.337.search-card.all.click&vd_source=6916013ff10f407b3c711485467e61ca

https://www.bilibili.com/video/BV1cb41177bm?p=30&vd_source=6916013ff10f407b3c711485467e61ca ****
https://www.bilibili.com/video/BV17G4y1b78i?p=169&vd_source=6916013ff10f407b3c711485467e61ca 2014年的C# 比较新,跟上面课程内容相同

C# WinForm
https://www.bilibili.com/video/BV1d7411F7PG?p=58&vd_source=6916013ff10f407b3c711485467e61ca

2.1 C#基础

刘铁锰:https://www.bilibili.com/video/BV13b411b7Ht?p=1

朝夕教育.net core
https://www.bilibili.com/video/BV147411x7p1/?spm_id_from=333.337.search-card.all.click&vd_source=6916013ff10f407b3c711485467e61ca

传播智客:(重点)
https://www.bilibili.com/video/BV1cb41177bm?p=88&vd_source=6916013ff10f407b3c711485467e61ca
https://space.bilibili.com/328199178

2.2 WPF框架

控件案例(文本):http://www.vue5.com/wpf/1632887624.html

赵庆民 WPF经典实例
https://www.bilibili.com/video/BV1xE41197FD?p=6&vd_source=6916013ff10f407b3c711485467e61ca

传播播客 杨中科
https://www.bilibili.com/video/BV1HE411Y7Zz?p=1&vd_source=6916013ff10f407b3c711485467e61ca

猎豹网校:C# WPF进阶课程
https://www.bilibili.com/video/BV1QK411K727/?spm_id_from=333.337.search-card.all.click&vd_source=6916013ff10f407b3c711485467e61ca

wpfui库:WPF Handy Control最新录制合集 企业级实战教程,多P在线教学
https://www.bilibili.com/video/BV1WB4y1x7SY?p=1&vd_source=6916013ff10f407b3c711485467e61ca

朝夕教育:WPF智能制造MES系统:
https://www.bilibili.com/video/BV1ZT411K7a5?p=19&vd_source=6916013ff10f407b3c711485467e61ca

朝夕教育:wpf自动化生产管理平台
https://www.bilibili.com/video/BV19a411S7xz?p=2&vd_source=6916013ff10f407b3c711485467e61ca

收费的课程:WPF记事本开发详解/Notepad/MVVM
https://edu.csdn.net/course/detail/29872?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-course-2%7Edefault%7EBlogCommendFromBaidu%7EPaid-1-29872-blog-126446201.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant_t0.none-task-course-2%7Edefault%7EBlogCommendFromBaidu%7EPaid-1-29872-blog-126446201.pc_relevant_default&utm_relevant_index=1

WPF音乐播放器
https://www.bilibili.com/video/BV1ta411x7gH?p=15&vd_source=6916013ff10f407b3c711485467e61ca

https://blog.csdn.net/weixin_34378045/article/details/86044043?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-86044043-blog-126259432.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-86044043-blog-126259432.pc_relevant_default&utm_relevant_index=2
Winform VlcPlayer(支持在线播放)源代码
https://blog.csdn.net/wj070621/article/details/127024637?spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EYuanLiJiHua%7EPosition-4-127024637-blog-86044043.pc_relevant_aa&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EYuanLiJiHua%7EPosition-4-127024637-blog-86044043.pc_relevant_aa&utm_relevant_index=5
vlcplayer调用方法:
https://www.cnblogs.com/smartsensor/p/4343769.html

2.3 MvvmLight(轻量级框架)

朝夕教育(2022-08-08更新):
https://www.bilibili.com/video/BV1kB4y1t7aC/?spm_id_from=333.999.0.0&vd_source=6916013ff10f407b3c711485467e61ca

2.4 CommunityToolkit(MvvmLight的升级版)

微软官方教学文档:https://learn.microsoft.com/zh-cn/windows/communitytoolkit/mvvm/introduction

github: https://github.com/CommunityToolkit/dotnet

2.5 Prism

github: https://github.com/PrismLibrary/Prism

朝夕教育:
https://www.bilibili.com/video/BV1tg411d7i4/?spm_id_from=333.337.search-card.all.click&vd_source=6916013ff10f407b3c711485467e61ca

微软系列技术教程(个人) Prism 个人记事本项目:
https://www.bilibili.com/video/BV1nY411a7T8/?p=3&vd_source=6916013ff10f407b3c711485467e61ca

2.6 MAUI

新出来的大一统框架,意思就是全终端都可以使用,包含移动,linux,win,web等等等。
暂时可以不用学习,因为他不支持win7!!!!!

3. net开源项目

dotNET China 社区:
https://toscode.gitee.com/dotnetchina
https://www.chinadot.net

QT大牛,真的佩服:
https://gitee.com/feiyangqingyun/QWidgetDemo

微软开源项目

Windows平台上编译ffmpeg源码,调试ffplay
https://www.bilibili.com/video/BV1VE411K766/?spm_id_from=333.337.search-card.all.click&vd_source=6916013ff10f407b3c711485467e61ca

4. 大V博客资源

赵庆明老师:
b站:https://space.bilibili.com/136991419
https://ke.qq.com/course/2996738/10061828477270530?quicklink=1#term_id=103112353

.NET MAUI学习指南
https://mp.weixin.qq.com/s?__biz=MzI5MTg4NzIyNg==&mid=2247486441&idx=1&sn=adba276ab954dcaa4fe3d9f92b6319a3&chksm=ec088afcdb7f03ea47cacb529f1e703e0eb1d4c0942ca87a9704f5bf8819a566d82efb9f8d63&mpshare=1&scene=23&srcid=1129oyjmK5nDSZsjtYZbUXeY&sharer_sharetime=1669732541295&sharer_shareid=6df1a0b4f2e77c305985dc01c053ae64#rd

999.疑难问题

(1)绑定状态数据前后端数据类型不一致的解决方法
比如:绑定的字段是IsChecked,单选按钮,后台存储的是Int类型的0或者1。

Hexo-零基础搭建个人博客(详解)

https://blog.csdn.net/weixin_45019350/article/details/121901433

https://www.bilibili.com/video/BV1iW411S7os?p=19&vd_source=6916013ff10f407b3c711485467e61ca