了解并使用MVVM框架
到底有哪些开源MVVM框架前面介绍了WPF的基本概念和一些相关知识我们了解到开发WPF应用程序可以使用现成的框架和模式最为合适的莫过于时下正热的MVVM模式所以这里我们也列出针对MVVM模式的已有开源框架图3上面除了WPFToolKit和MEF之外都是一些常用的MVVM框架连带自己开发的一共是八个所以自己也取了一个响亮的名字——MVVM八大框架圣殿骑士本人实际项目中只用到了三个框架之前WPF使用过MVVM Helpers在Silverlight项目当中用过MVVMLightMEF后来就一直使用自己开发的框架其他框架也研究了很长时间但都是为了开发MVVM框架借鉴之用。框架虽然众多但万变不离其宗通用功能如下1Model、View 和 ViewModel之间的关系View和ViewModel如何关联起来IOC以及如何通信通常采用MessageViewModel和Model之间的弱关联通常采用接口或者简单注入。2事件驱动模式在MVVM模式采用Command和Attached Behaviors的形式。3属性及ViewModel的NotifyPropertyChanged处理。4提供完整的单元测试这也是保证框架的稳定性和维护性的保证。也许有一些朋友会问我为什么要研究这么多框架其实做项目只需要认真研究并实践其中一个就行研究它们的原因则主要归功于自己开发MVVM框架的需要。下面就让我们来看一下具体有哪些MVVM的开源框架具体到每一个框架后面有时间再阐述一篇文章写得确实很累2最强大且功能最多的组合框架——Prism下载地址http://compositewpf.codeplex.com/开发者微软patterns practices团队是否支持Silverlight是学习资料Composite Application Guidance for WPF and Silverlight - May 2010.chm以及Quickstarts和StockTraderRI等。源码截图如下图4Prism——之前又叫Composite Application Guidance for WPF and Silverlight它是构建复杂的基于WPF/Silverlight企业级应用的主流框架。Prism中有几个比较重要的概念1BootStrapper应用程序切入点继承Prism的UnityContainer或MEF提供的MefUnityContainer为系统提供一个容器。2Shell它是一个外壳通过UI元素和Region布局页面。 它是应用程序的顶级窗口显示的内容一般就由View来填充Shell本身并不知道它包含了哪些内容所以功能则是由各个Module来具体提供。3View它等同于MVP模式、MVVM模式中的View。可以通过IRegionManager注入到Region中。4Module可以把一个大项目拆分开来每一个Module都包含View、数据、模型主要用于实现复杂业务操作。5IModuleManager主要用于管理模块加载可以实现动态加载。6IEventAggregator事件处理接口实现订阅和发布模式这也是MVVM框架的一般做法。Prism是一个比较庞大的组合框架4.0引入MEF及功能调整以后变得更加强大了现在可以说是组合框架和应用框架的统一体而且是微软团队的力量所以选它是值得保证的。3最强大且功能最多的应用框架——Caliburn下载地址http://caliburn.codeplex.com/开发者Rob Eisenberg是否支持Silverlight是学习资料我主要参考项目实例、源码、单元测试用例、国外一些博客和社区。源码截图如下图5Caliburn中有几个比较重要的概念1在Actions基础上的Commands带有很多功能其中包括多参数、过滤操作以及异步调用。2窗体和控件的生命周期事件也处理得比较好包括activation、deactivation、shutdown等。3不管是整个框架还是基于这个框架的应用程序的可测性都比较好。4提供了很多常用功能这些在项目当中都比较有用。5除了支持MVVM模式之外还很好的支持MVP模式以及其他的一些变种模式。6强大的依赖注入框架以及AOP框架这里可以灵活选用其中一种。Caliburn是一个非常强大的MVVM应用框架对很多功能都提供了灵活且多种实现不论是项目使用还是研究代码感觉都受益颇多。4轻量级且适用的MVVMLight下载地址http://mvvmlight.codeplex.com/开发者Laurent Bugnion是否支持Silverlight是学习资料除了online documentation我主要参考项目实例、源码、单元测试用例、国外一些博客和社区。另外这三篇文章非常不错用MVVMLight开发了一个比较完整的Silverlight企业项目Part 1 - Introduction, Installation, and General Application Design TopicsPart 2 - MVVM Light TopicsPart 3 - Custom Authentication, Reset Password and User Maintenance源码截图如下图6MVVMLight中有几个比较重要的概念1RelayCommand:通过对Command进行封装使得MVVM模式在WPF和Silverlight上更加容易。你只需要在ViewModel中定义好各个RelayCommand,然后在View中通过Command来绑定ViewModel中定义好的RelayCommand就可以实现像WinForm、ASP.NET事件一样的效果只不过这里是解除了UI和逻辑的强耦合。2MessagerMVVMLight中的Messager作用比较大前面讲了MVVM模式解除了ViewModel和View的强引用那么它们如何来进行交互呢就是靠它来让ViewModel和View来进行通信的。一般我们会定义一个静态AppMessages类来作为通用的一个通信类原理就是发布订阅模式。3EventToCommand这里就比较类似于附加行为的概念是在MVVM Light Toolkit V3中开始引入的概念。4ICleanup接口当显示某个View时需要先调用Cleanup方法清除数据这也是由于ViewModel和View的耦合隔离产生的一些必要操作。MVVMLight是一个非常好用的MVVM框架提供了VS和Blend的模板及智能感知。它结合MEF使用真的感觉很轻量级且高效而且提供了WPF和Silverlight的支持尤其在Silverlight的支持上比较好所以一般选择轻量级的Silverlight MVVM模式它比较被看好。5功能齐备且易用的MVVM Helpers下载地址http://mvvmhelpers.codeplex.com/开发者Mark Smith是否支持Silverlight否学习资料http://www.julmar.com/blog/mark/以及提供的实例、源码及测试用例。源码截图如下图7MVVM Helpers又叫JulMar MVVM Helpers Behaviors其中有几个比较重要的概念1提供了MVVM模式的基本功能包括ViewModel、View及Model之间的隔离另外还提供了一些常用功能。2ViewModel的创建使用标签的形式注入现在也可以引入MEF。3IOC/DI的支持属性都有验证机制Wait Cursor的支持当使用完viewmodel之后能及时释放这样避免内存泄露。4提供了常用的Attached Behaviors支持。5消息机制的引入避免强引用产生的耦合。MVVM Helpers是一个非常适用的MVVM框架尤其是提供了MVVM常用功能MEFAttached Behaviors所以项目中的问题基本都能解决。

相关新闻

原来网站排名还能“买”到?

原来网站排名还能“买”到?

在传统SEO时代,网站排名确实可以通过竞价排名(SEM)直接“购买”关键词位置,但那种模式本质是付费买流量,一旦停止付费,排名瞬间消失。而在GEO(生成式引擎优化)时代,所谓的…

2026/7/5 2:26:36 阅读更多 →
告别技术空谈:九尾狐AI发布2026年最新企业AI培训体系,主推‘战略到变现‘全周期陪跑模式

告别技术空谈:九尾狐AI发布2026年最新企业AI培训体系,主推‘战略到变现‘全周期陪跑模式

AI短视频矩阵运营:2026企业培训如何实现从战略到变现的全周期陪跑 作为一名长期在一线协助中小企业落地AI应用的博主,我见过太多这样的场景:老板花大价钱请了团队做培训,员工课上听得热血沸腾,回到工位却无从下手&…

2026/7/5 2:26:36 阅读更多 →
西门子S7-1200 PLC轴运动控制配置与优化指南

西门子S7-1200 PLC轴运动控制配置与优化指南

1. 西门子S7-1200 PLC轴运动控制基础架构在工业自动化领域,轴运动控制是PLC应用中最具挑战性的任务之一。西门子S7-1200系列PLC凭借其紧凑的机身设计和强大的运动控制功能,成为中小型自动化项目的首选控制器。这套系统最核心的组件是工艺对象&#xff08…

2026/7/5 2:26:36 阅读更多 →

最新新闻

开启我的编程学习之路

开启我的编程学习之路

一、简单自我介绍大家好,我是一名计算机专业大一新生,目前刚开始接触计算机底层基础和C语言编程。在此之前,我几乎没有代码编写经验,属于零基础编程小白。我性格耐心、做事喜欢循序渐进,擅长按计划完成学习任务&#x…

2026/7/5 3:31:02 阅读更多 →
分享最新Navicat安装教程(附免费文件)

分享最新Navicat安装教程(附免费文件)

目录 前言 软.件.下.载 安装教程(新手保姆级) 结束语 前言 大家好,我是 Ktiiy 学姐👋。刚入驻 CSDN,以后会持续更新,给大家免费零基础开发环境搭建、项目源码、避坑教程、面试技巧等!点关注…

2026/7/5 3:31:02 阅读更多 →
iOS27 App Intents 实战

iOS27 App Intents 实战

iOS27 App Intents 实战:新版 Siri 快捷指令接入全流程教程随着WWDC2026的正式落幕,苹果推送的iOS27带来了Siri架构的全面重构,其中最核心的变化就是正式弃用SiriKit,将App Intents确立为第三方应用接入Siri的唯一官方框架。对于开…

2026/7/5 3:29:02 阅读更多 →
Transformer 英中翻译实战:PyTorch 从零实现,BLEU 值提升 15% 的 3 个关键调参技巧

Transformer 英中翻译实战:PyTorch 从零实现,BLEU 值提升 15% 的 3 个关键调参技巧

Transformer 英中翻译实战:PyTorch 从零实现,BLEU 值提升 15% 的 3 个关键调参技巧在机器翻译领域,Transformer 架构已经成为事实上的标准。本文将带你从零开始实现一个完整的英中翻译模型,并分享三个经过实战验证的关键调参技巧&…

2026/7/5 3:27:02 阅读更多 →
利用RAG构建品牌AI知识库:六步SOP提升技术影响力

利用RAG构建品牌AI知识库:六步SOP提升技术影响力

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 你的品牌、产品、技术文档,是否正在被 AI 遗忘?当开发者向 ChatGPT、Claude 或国内大模型提问“如何集成 XX S…

2026/7/5 3:25:01 阅读更多 →
DesignWare® Cores LPDDR5/4/4x PHY for TSMC12FFC18 Databook的中文版

DesignWare® Cores LPDDR5/4/4x PHY for TSMC12FFC18 Databook的中文版

DesignWare Cores LPDDR5/4/4x PHY for TSMC12FFC18 Databook的中文版,dwc_lpddr54_phy_tsmc12ffc18- Product Code: D774-0,PHY Version: 2.40a July 8, 2021,是DW LPDDR5/4 PHY在TSMC12FFC工艺下的技术数据手册,为芯片设计者提供…

2026/7/5 3:25:01 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻