• WPF轻量级MVVM框架介绍(1)功能简介


    很久(算起来快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,并将其包含在商业项目中,(唯一的限制是您必须包含许可证的副本)。

  • 相关阅读:
    Java实现 蓝桥杯VIP 算法提高 P0404
    Java实现 蓝桥杯VIP 算法提高 P0404
    Java实现 蓝桥杯VIP 算法提高 P0404
    Java实现 蓝桥杯VIP 算法提高 P0404
    Java实现 蓝桥杯VIP 算法提高 P0404
    Java实现 蓝桥杯VIP 算法训练 排列问题
    Java实现 蓝桥杯VIP 算法训练 排列问题
    Java实现 蓝桥杯VIP 算法训练 排列问题
    Java实现 蓝桥杯VIP 算法训练 排列问题
    关于模态/非模态对话框不响应菜单的UPDATE_COMMAND_UI消息(对对WM_INITMENUPOPUP消息的处理)
  • 原文地址:https://www.cnblogs.com/qouoww/p/15783005.html
Copyright © 2020-2023  润新知