何小豆儿在此 发表于 2024-6-4 21:10:35

一款WPF的精简版MVVM框架——stylet框架的初体验(包括MVVM绑定、依赖注入等

本日偶然知道一款叫做stylet的MVVM框架,挺小巧的,特别是它的命令触发方式,简单粗暴,让人感觉很巴适,现在我做一个简单的demo来顺便来分享给各人。本地创建一个WPF项目,此处我使用.NET 8来创建。然后引用stylet最新的nuget包。https://img2024.cnblogs.com/blog/1995789/202406/1995789-20240604203859274-1011962313.png 然后删掉App.xaml里面自带的启动项https://img2024.cnblogs.com/blog/1995789/202406/1995789-20240604203859218-8348611.png删掉以后:https://img2024.cnblogs.com/blog/1995789/202406/1995789-20240604203859201-730857524.png stylet使用View和ViewModel逼迫性一一对应的关系,好比说,页面A,必须要写成AView和AViewModel的形式,才能识别。所以默认的MainWindow咱们可以干掉,重新创建一个页面,例如 MainView: https://img2024.cnblogs.com/blog/1995789/202406/1995789-20240604203859461-1079120802.png再创建一个对应的ViewModel类。它的ViewModel类型,需要继承自Stylet.Screenhttps://img2024.cnblogs.com/blog/1995789/202406/1995789-20240604203859421-2122314526.png然后需要创建一个启动项,默认类名称为 Bootstrapper,它继承自Bootstrapper,T指的是启动项对应的ViewModel。启动项Bootstrapper里面还要重写IOC容器进行服务注册等有关。https://img2024.cnblogs.com/blog/1995789/202406/1995789-20240604203859211-1347358904.png在App.xaml.cs文件内,提供对启动项Bootstrapper的声明和使用。https://img2024.cnblogs.com/blog/1995789/202406/1995789-20240604203859414-824144752.png如果以上步骤都没做错的话,那么现在应该是可以正常启动了。https://img2024.cnblogs.com/blog/1995789/202406/1995789-20240604203859442-1644488118.png 接下来,MVVM的实现,先搞2个简单的控件,一个提供属性MVVM实现,一个提供点击Command命令实现。需要注意的是,stylet的Command命令或者其他自定义命令实现,不是直接Bingding了,而是使用Action来绑定。https://img2024.cnblogs.com/blog/1995789/202406/1995789-20240604203859245-1596014641.pngViewModel里面,看下详细代码,和平常各人使用的MVVM双向绑定,有点差别大地方,我圈起来了。https://img2024.cnblogs.com/blog/1995789/202406/1995789-20240604203859200-607256120.png启动程序,原始结果如下所示https://img2024.cnblogs.com/blog/1995789/202406/1995789-20240604203859440-160423958.png点击按钮以后,自动进入到指定的方法里面,把Message值改变,同时前端展示的值也跟着变了。https://img2024.cnblogs.com/blog/1995789/202406/1995789-20240604203859441-510569965.png接下来说一下它的IOC容器来实现依赖注入。先创建一个测试用的服务类,里面就一个方法,获取消息,返回“Stylet 服务注入~ ”字符串。https://img2024.cnblogs.com/blog/1995789/202406/1995789-20240604203859242-77148453.png启动项的ConfigureIoC方法里面,提供服务的注册。不过它自带的IOC容器可选生命周期比较有限,没有prism或者castle或者asp.netcore自带的容器丰富。不过注册的写法看起来很直观,builder.Bind().To().生命周期模式。https://img2024.cnblogs.com/blog/1995789/202406/1995789-20240604203859239-1897529390.png通过构造函数注入进来,然后在命令方法里面直接调用,并把返回值提供给Message用于展示。https://img2024.cnblogs.com/blog/1995789/202406/1995789-20240604203859421-54564771.png运行程序,并点击按钮,可以看到返回了GetMessage()里面返回的信息,说明服务注册和注入使用是成功的。https://img2024.cnblogs.com/blog/1995789/202406/1995789-20240604203859441-883492993.png如果有需要以上demo源码,可以在我个人公众号【Dotnet Dancer】后台回复 【stylet】即可获取。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 一款WPF的精简版MVVM框架——stylet框架的初体验(包括MVVM绑定、依赖注入等