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

wpf,mvvm,stylet · 浏览次数 : 4

小编点评

本文将为大家介绍如何使用 Stylet MVVM 框架创建一个简单的 WPF 项目。整个过程包括创建 View、ViewModel、启动项 Bootstrapper,以及实现 MVVM 的一些基本功能。 1. 创建 WPF 项目并引用 Stylet nuget 包 首先,在本地创建一个 WPF 项目,并使用 .NET 8.0 创建。然后,在项目的 nuget 包管理器中,添加 Stylet 的最新版本。 2. 删除 App.xaml 中的自定义启动项 删除 App.xaml 文件中的默认启动项(通常是 Bootstrapper 类)。这样可以避免与我们的 Bootstrapper Bootstrapper 产生冲突。 3. 创建 View 和 ViewModel 在项目中创建一个新的窗体,命名为 MainView;同样地,创建一个新的类,命名为 MainViewModel,使其继承自 Stylet.Screen。确保 View 和 ViewModel 之间有一一对应的关系。 4. 创建 Bootstrapper 创建一个新的类,名为 Bootstrapper,使其继承自 Bootstrapper。在这个类中,需要重写 IOC 容器以完成服务注册等相关操作。 5. 在 App.xaml.cs 文件中使用启动项 Bootstrapper 在 App.xaml.cs 文件中,声明并使用 Bootstrapper 类,以便启动时的依赖注入。 6. 实现 MVVM 的简单的控件 为了演示 MVVM 的实现,我们可以在 View 中创建一个提供属性的控件和一个点击 Command 的控件。注意,Stylet 的 Command 绑定不同于传统的 MVVM 双向绑定。 7. 实现 IOC 容器(可选) 虽然 Stylet 自带的 IOC 容器功能相对有限,但仍然可以先尝试使用。创建一个测试用的服务类,并在 Bootstrapper 的 ConfigureIoC 方法中进行服务注册。通过这种方式,我们可以实现依赖注入。 8. 运行和测试 运行程序后,点击按钮,查看是否按照预期进入指定方法并更新前端展示的内容。同时,检查后端是否收到了正确的消息。 以上就是使用 Stylet MVVM 框架创建 WPF 项目的基本流程。如果需要获取源码,请发送请求至【Dotnet Dancer】公众号,并回复 “stylet”。 风格 | 描述 --- | --- 项目名称 | 使用 Stylet MVVM 框架的 WPF 项目 示例 编程语言 | C# 框架 | Stylet 时间 | 2022年4月 作者 | [Dancer](#) 链接 | [Github](#) 贡献者 | [StarrySky0304](#)

正文

今天偶然知道一款叫做stylet的MVVM框架,挺小巧的,特别是它的命令触发方式,简单粗暴,让人感觉很巴适,现在我做一个简单的demo来顺便来分享给大家。
本地创建一个WPF项目,此处我使用.NET 8来创建。然后引用stylet最新的nuget包。
0
 
然后删掉App.xaml里面自带的启动项
0
删掉以后:
0
 
stylet使用View和ViewModel强制性一一对应的关系,比如说,页面A,必须要写成AView和AViewModel的形式,才能识别。所以默认的MainWindow咱们可以干掉,重新创建一个页面,例如 MainView:
 
0
再创建一个对应的ViewModel类。它的ViewModel类型,需要继承自Stylet.Screen
0
然后需要创建一个启动项,默认类名称为 Bootstrapper,它继承自Bootstrapper,T指的是启动项对应的ViewModel。启动项Bootstrapper里面还要重写IOC容器进行服务注册等有关。
0
在App.xaml.cs文件内,提供对启动项Bootstrapper的声明和使用。
0
如果以上步骤都没做错的话,那么现在应该是可以正常启动了。
0
 
接下来,MVVM的实现,先搞2个简单的控件,一个提供属性MVVM实现,一个提供点击Command命令实现。需要注意的是,stylet的Command命令或者其他自定义命令实现,不是直接Bingding了,而是使用Action来绑定。
0
ViewModel里面,看下具体代码,和平常大家使用的MVVM双向绑定,有点差异大地方,我圈起来了。
0
启动程序,原始效果如下所示
0
点击按钮以后,自动进入到指定的方法里面,把Message值改变,同时前端展示的值也跟着变了。
0
接下来说一下它的IOC容器来实现依赖注入。先创建一个测试用的服务类,里面就一个方法,获取消息,返回“Stylet 服务注入~ ”字符串。
0
启动项的ConfigureIoC方法里面,提供服务的注册。不过它自带的IOC容器可选生命周期比较有限,没有prism或者castle或者asp.netcore自带的容器丰富。不过注册的写法看起来很直观,builder.Bind<接口>().To<实现>().生命周期模式。
0
通过构造函数注入进来,然后在命令方法里面直接调用,并把返回值提供给Message用于展示。
0
运行程序,并点击按钮,可以看到返回了GetMessage()里面返回的信息,说明服务注册和注入使用是成功的。
0
如果有需要以上demo源码,可以在我个人公众号【Dotnet Dancer】后台回复 【stylet】即可获取。

与一款WPF的精简版MVVM框架——stylet框架的初体验(包括MVVM绑定、依赖注入等操作)相似的内容:

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

今天偶然知道一款叫做stylet的MVVM框架,挺小巧的,特别是它的命令触发方式,简单粗暴,让人感觉很巴适,现在我做一个简单的demo来顺便来分享给大家。 本地创建一个WPF项目,此处我使用.NET 8来创建。然后引用stylet最新的nuget包。 然后删掉App.xaml里面自带的启动项 删掉以

wpfui:一个开源免费具有现代化设计趋势的WPF控件库

wpfui介绍 wpfui是一款开源免费(MIT协议)具有现代化设计趋势的WPF界面库。wpfui为wpf的界面开发提供了流畅的体验,提供了一个简单的方法,让使用WPF编写的应用程序跟上现代设计趋势。截止写这篇文章,该项目获得了6.7k starts。 最近我也在使用wpfui,整体使用下来感觉非常

WPF开源轻便、快速的桌面启动器

前言 今天大姚给大家分享一款WPF开源、简单、轻便、快速的桌面启动器(支持多主题、多语言:简体中文、繁体中文、英文等):CurvaLauncher。 WPF介绍 WPF 是一个强大的桌面应用程序框架,用于构建具有丰富用户界面的 Windows 应用。它提供了灵活的布局、数据绑定、样式和模板、动画效果

一款开源、免费、现代化风格的WPF UI控件库 - ModernWpf

前言 今天大姚给大家分享一款开源(MIT License)、免费、现代化风格的WPF UI控件库:ModernWpf。 项目介绍 ModernWpf是一个开源项目,它为 WPF 提供了一组现代化的控件和主题,使开发人员能够创建具有现代外观的桌面应用程序。 项目特点 可以轻松自定义的浅色和深色主题。

一款.NET开源的i茅台自动预约小助手

前言 今天大姚给大家分享一款.NET开源、基于WPF实现的i茅台APP接口自动化每日自动预约(抢茅台)小助手:HyggeImaotai。 项目介绍 该项目通过接口自动化模拟i茅台APP实现每日自动预约茅台酒的功能,软件会在指定时间开始对管理的用户进行批量预约。 项目功能 用户管理 预约项目 店铺管理

基于Material Design风格开源、易用、强大的WPF UI控件库

前言 今天大姚给大家分享一款基于Material Design风格开源、免费(MIT License)、易于使用、强大的WPF UI控件库:MaterialDesignInXamlToolkit。 项目介绍 MaterialDesignInXamlToolkit 是一个开源、易于使用、强大的 WPF

一款基于C#开发的通讯调试工具(支持Modbus RTU、MQTT调试)

前言 今天大姚给大家分享一款基于C#、WPF、Prism、MaterialDesign、HandyControl开发的通讯调试工具(支持Modbus RTU、MQTT调试,界面色彩丰富):Wu.CommTool。 工具特点 工具界面色彩丰富。 支持Modbus RTU、MQTT服务器、MQTT客户端

一款.NET开源、功能强大、跨平台的绘图库 - OxyPlot

前言 今天大姚给大家分享一款.NET开源(MIT License)、免费、跨平台、功能强大的绘图库,支持多平台使用(包括:WPF、UWP、WinForm、Silverlight、Xamarin.iOS、Xamarin.Android、Xamarin.Forms 和 Xamarin.Mac等):Oxy

能快速构建和定制网络拓扑图的WPF开源项目-NodeNetwork

大家好,我是沙漠尽头的狼,今天介绍一个WPF开源项目-NodeNetwork,它可以帮助我们快速构建和定制网络拓扑图。 一、前言 在现代软件开发中,数据可视化和可交互性越来越受到关注。为了实现这一点,通常需要使用各种图表、表格、网络拓扑图等控件。然而,对于某些特殊的场景,这些控件可能无法满足需求,此

Simple WPF: WPF自定义一个可以定义步长的SpinBox

通过WPF的按钮、文本输入框实现了一个简单的SpinBox数字输入用户组件并可以通过数据绑定数值和步长。本文中介绍了通过Xaml代码实现自定义组件的布局,依赖属性的定义和使用等知识点。