目录
一 开发社区
Developer Blog
Learn
Developer Platform
二 上一章回顾
一 开发社区
二 上一章回顾
三 自定义 ViewModel 注册
1.类型——类型
2.类型——工厂注册
3.泛型工厂注册
4.泛型类型注册
四 实战演练
六 总结
七 下章预告
三 常见MVVM框架介绍
如果你熟悉WPF当中的命令接口(ICommand), 通知属性表更(INotifyPropertyChanged)的作用, 就会发现众多框架都是基于这些进行封装扩展功能, 实现其通知、绑定、命令等功能来实现UI与数据的绑定来更新界面。
不同的MVVM框架,大同小异,大体使用上会在声明方式以及特定功能上存在存在差别。
下面列举了常用的3个MVVM框架,他们的一些差异。如下所示:
功能实现 / 具体框架 | Prism | Mvvmlight | Micorosoft.Toolkit.Mvvm |
通知 | BindableBase | ViewModelBase | ObservableObject |
命令 | DelegateCommand | RelayCommand | Async/RelayCommand |
聚合器 | IEventAggregator | IMessenger | IMessenger |
模块化 | √ | × | × |
容器 | √ | × | × |
依赖注入 | √ | × | × |
导航 | √ | × | × |
对话 | √ | × | × |
如上所示, 各个框架都具备基础的通知、绑定、事件聚合器等功能, 而Prsim在此基础上额外扩展了依赖注入、容器、以及导航会话等功能, 可以适配你更加广泛的功能需求,所以建议大家用Prism。
当然,在实际的开发过程当中, 可以根据实际的功能需求, 对不同的框架选型, 同时这也需要你对各个框架之间的优缺点进行判断。
那么, 下面将主要介绍Prism当中的通知属性变更、绑定等功能。
四 属性通知
1 mvvmlight视图模型基类
如果和我一样之前使用过mvvmlight框架的同学, 应该对以下代码很熟悉,ViewModel继承类如下:
2 Prism视图模型基类
而在Prism当中, 需要继承于BindableBase, 如下所示:
五 Command命令
1 RelaryCommand
在mvvmlight/microsoft.toolkit.mvvm中, 声明Command需要声明RelayCommand,如下:
2 DelegateCommand
在Prism当中, 你可以使用DelegateCommand并可携带参数, 如下:
六 复合命令(CompositeCommand)
1 定义方式
单个Command而言, 只能触发单一功能, 而复合命令是Prism当中非常强大的功能, CompositeCommand简单来说是一个父命令, 可以在其下注册N个子命令, 如下所示:
2 激活方式
父命令被激活, 它将触发对所有的子命令, 如果任意一个命令CanExecute=false,它将无法被激活,如下所示:
复合命令需要满足全部命令均为可执行状态时,才可执行激活
七 总结
以上就是Prism实现通知属性变更、命令和复合命令的过程,本文仅仅简单示范了如何使用,此处仅用来帮助学习理解,在实际生产环境开发过程中,我们就需要根据实际需求进行扩展。
八 下章预告
下一章我会教大家事件聚合器的使用
博主RaymondLeigh:如果您觉得本文为您提供了结局思路或解决了您的实际问题,麻烦您🙏帮忙点赞、收藏、评论、关注一键四连,您的举手之劳将为我写作提供动力源泉!🤞
print('Hello,RaymondLeigh!') # 每日问候,跟大家问好!
🌞精品前端MaterialDesign专栏:MaterialDesign专栏
💾精品后端SqlServer专栏:SqlServer专栏
💻