qouoww

质量管理+软件开发=聚焦管理软件的开发与应用

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

很久(算起来快10年了吧!)都没有在博客园更新内容了,近期在寻找MVVM框架时发现了这个:Antony Male开发的Stylet, 用起来感觉很好,不敢独享,将其有关资料翻译过来,大家共同学习。

Stylet的开源地址在这里:https://github1s.com/canton7/Stylet/,

下文的内容主要来源于项目的Readme文件(部分内容为机器翻译,有生硬之处,敬请谅解)。

  • 功能简介
    Stylet是一个小巧但功能强大的MVVM框架,灵感来自Caliburn.Micro。其目的是进一步降低复杂性和魔力(译者注:Caliburn.Micro有很多让人抓狂的约定,看起来像魔法,这对新手而言一点都不友好),让不熟悉任何MVVM框架的人(同事)更快地跟上速度。

它还提供了Caliburn.Micro中不可用的功能,包括自己的IoC容器,简单的ViewModel验证,甚至是与MVVM兼容的MessageBox。

低LOC数量和非常全面的测试套件使其成为使用和验证/验证SOUP具有高开销的项目的一个有吸引力的选择,其模块化工具包架构意味着它很容易使用你喜欢的部分,或者替换你不喜欢的部分。

下面显示了一个简短的功能列表。点击右侧的链接了解更多信息。

  • 视图模型优先的方法

经典的 MVVM 结构(视图知道如何实例化其 ViewModel,而 ViewModel 通常不直接通信)称为 View-first。但是,反转此模式(自己实例化 ViewModels 并自动附加视图)提供了许多优点,允许您以一种应该非常熟悉的方式编写 ViewModels。这种 ViewModel 优先的方法是唯一受 Stylet 支持的方法。

  • Action

WPF 使用的 ICommand 接口功能强大,但在 MVVM 体系结构中使用时很笨拙。ViewModel 为响应按钮单击等操作而执行的操作应表示为属性而不是方法,这似乎不对。一个简单的<Button Command="{s:Action DoSomething}"/>会在每次单击按钮时调用 ViewModel下的DoSomething()方法。如果您有一个名为CanDoSomething的 bool 属性,则将观察该属性并用于判断是否应启用或禁用该按钮。
Action操作也适用于事件,允许您执行类似 <Button MouseEnter="{s:Action DoSomethingElse}"/>这样的语句。

  • Screens and Conductors

Screen 类提供了许多功能,使它成为 ViewModels 的有吸引力的基类:PropertyChanged 通知、验证、在显示/隐藏/关闭时收到通知的功能,以及控制是否以及何时可以关闭它的功能。

  • 事件聚合器

Stylet的事件聚合器与Caliburn.Micro非常相似,允许订阅者接收来自发布的消息,而无需了解或保留另一个。这对于 ViewModels 之间的消息传递特别有用,尽管它还有很多其他用途。

  • 窗口管理器

使用 ViewModel 优先方法,您可以通过引用要显示的 ViewModel 来显示窗口和对话框,并且视图会自动附加。WindowManager允许轻松完成此操作。

还提供了与 MVVM 兼容的 MessageBox 实现,因此您不必自己再实现一遍。

  • 验证

传统上,MVVM 中的验证有点麻烦:它需要在每个需要验证的 ViewModel 中加入相当数量的样板(boilerplate),而有关如何很好地完成此操作的资源很少。

Stylet 附带了一个框架,用于获取您最喜欢的验证库(例如FluentValidation),并处理运行验证并将结果报告给 View。

  • StyletIoC

Stylet带有自己的轻量级且速度极快(但仍然强大)的IoC容器,尽管如果您愿意,可以轻松使用其他容器。

  • MIT许可证

Stylet在MIT许可证下分发,该许可证允许您修改Stylet,并将其包含在商业项目中,(唯一的限制是您必须包含许可证的副本)。

posted on 2022-01-10 08:26  qouoww  阅读(1635)  评论(2编辑  收藏  举报