在UWA体验MVVM LIGHT之简介
在今年//Build 2014大会上,我们伟大光荣正确的大微软宣布了UWA(Unviersal Windows App)的发布,与之对应的是VS 2013 Update 2
什么是UWA呢?
自从WPF以后微软所开创的XAML+C#的客户端编程模式相信很多人或多或少都了解过
在这种模式下,可以实现一种很有逼格的编程模式,叫MVVM
首先,在xaml+c#的编程模式下,每一个页面都有一个xaml文件跟一个xaml.cs文件
看上去有那么丁点儿像ASP.Net的Winform,但是这货的关键点在于他支持一个叫Binding的语法(数据绑定),配合上DataContent这个属性(数据源)
当一切结合起来之后,在页面的根部(Page里),形成类似这种语法
DataContext="{Binding Source={StaticResource Locator},Path=MainViewModel}"
就把整个页面的数据源都指定到了一个对应的类里
然后就诞生了人类希望的MVVM模式
哈?不懂?没关系 有个概念就好 现在这里只是大概草草说下而已,更多详情一切尽在后续博文里。
然后说说UWA
自WPF开始,后面的WPF/E(即SilverLight)以及接下来的WP和Win8无一例外全部都用了Xaml+C#这种模式
而在Win8的时候还发布了WinRT(Windows 运行时),与之相对于的还有PCL(Portatable Class Library)
你可以不了解上面一堆乱七八糟的术语(有兴趣请自行搜索了解),但你应该想到既然都是同样的一种设计模式,能不能我在为WP设计的一个APP的时候,在界面上稍加修改就能运行到Win8或者WPF或者SilverLight上呢?
如果你能想到这点,很好,人类希望阵营组里又多了一员
我们的大微软就是为了解决这个问题而在孜孜不倦的努力,最后终于有了UWA(其实之前已经人有通过文件链接和条件编译等方式实现了伪UWA,此处不讨论)
再来简单介绍下MVVM
MVVM是近年来在跟XAML技术配合下一种广受青睐的设计模式
MVVM将程序结构分为View-ViewModel-Model这三个层
View是负责界面显示,具体到MVVM来说就是那个xaml文件
ViewModel是负责逻辑处理,对应一个cs文件(注意不是xaml.cs的那个,是另外一个,之后博文会详说)
Model是负责数据模型存储,也是对应一个cs文件
在MVVM模式下通过ViewModel完美的把数据Model和界面视图View分离,在ViewModel上也可以专心处理逻辑问题
瞬间逼格倍增有木有
结合MVVM和UWA我们来考虑下一个基本APP的要素
其中受制于屏幕大小和平台等原因View这个元素肯定无法通用,必须为每一个平台都要重写(总不能5寸的wp跟13寸的win8都用同一个UI吧?大微软的Win8跟WP的界面也不是同一套吧?最多只能说看起来很像)
ViewModel的话,嗯 这个绝大部分的情况下应该是可以重用的 之所以说绝大部分是因为有些设备上的影响(比如大部分pc都没GPS吧)
Model上,这个应该都是可以拿来重用的。
所以以MVVM模式下开发UWA应用,那么如果你开发好了一个App(WP或者Win8的版本)就相当于另外一个版本至少开发好了60%,然后再重新写一下View就好了
最后简单介绍下MVVM框架
上面说了MVVM各种美妙,那么总有那么几个大牛级别的人为了人类希望就把搭建框架这种底层的活儿给干好然后给我们这些苦逼的码农以希望
MVVM Light是国外Galasoft所开发的一个框架(微软MVP哟)这是官网
是比较早也是比较出名的一个MVVM框架了
国内的话也有我们大微软员工 @韦恩卑鄙 的MVVM sidekick
本人目前在钻研MVVM LIGHT中,MVVM SideKick也有琢磨不过每次看到那么多代码就有点怕怕。。。。
本文就暂且到此先把
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?