zoukankan      html  css  js  c++  java
  • 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,并将其包含在商业项目中,(唯一的限制是您必须包含许可证的副本)。

  • 相关阅读:
    CSS3 3D的总结(初学者易懂)
    BAT面试算法精品课直通BAT面试算法精品课购买优惠码-牛客网
    深度学习UFLDL老教程笔记1 稀疏自编码器Ⅱ
    深度学习UFLDL老教程笔记1 稀疏自编码器Ⅰ
    算法分析之函数渐近分析
    调用WebServices报错,请求“System.Web.AspNetHostingPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”类型的权限已失败。
    很久之前写的 ,突然想放上去
    ASP.NET Core – Web API 冷知识
    ASP.NET Core C# 反射 & 表达式树 (第三篇)
    ASP.NET Core C# 反射 & 表达式树 (第二篇)
  • 原文地址:https://www.cnblogs.com/qouoww/p/15783005.html
Copyright © 2011-2022 走看看