Stylet 介绍_XBMY的博客-程序员秘密

Stylet 介绍

Stylet是受Caliburn.Micro启发的最小但功能强大的MVVM框架。其目的是进一步降低复杂性和魔力,使不熟悉任何MVVM框架的人员(同事)可以更快地加快速度。

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

低的LOC数量和非常全面的测试套件使其成为使用和验证/验证SOUP的项目费用高昂的项目的有吸引力的选择,其模块化工具包启发式体系结构意味着您可以轻松地仅使用所需的位或替换你不会的。

简短的功能列表如下所示。请点击右侧的链接以了解更多信息。

A ViewModel-First approach

视图知道如何实例化其ViewModel且视图模型通常不直接通信的经典MVVM结构称为“视图优先”。但是,反转此模式-自己实例化ViewModels并自动附加视图-提供了许多优点,使您可以以非常熟悉的方式来编写ViewModels。此ViewModel-first方法是Stylet支持的唯一方法。

Actions

WPF使用的ICommand接口功能强大,但在MVVM体系结构中使用时却笨拙。应该将ViewModel为响应按钮单击之类的动作而采取的动作表示为属性而不是方法,这似乎是不对的。每次单击按钮时,都会有一个简单的原因导致DoSomething()ViewModel上的调用。此外,如果您有一个名为的bool属性CanDoSomething,则该属性将被观察并用于告诉您该按钮是启用还是禁用。

Actions 也可以与事件配合使用,使您可以执行。

Screens and Conductors

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

The Event Aggregator(事件汇总器)

Stylet的Event Aggregator与Caliburn.Micro的非常相似,它使订户可以在不了解对方或保留对方的情况下接收来自发布的消息。尽管它还有许多其他用途,但它对于在ViewModels之间进行消息传递特别有用。

The WindowManager(窗口管理器)

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

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

Validation(验证方式)

传统上,在MVVM中进行验证有点麻烦:每个需要验证的ViewModel中都需要大量样板,而如何做到这一点的资源也很少。

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

StyletIoC

Stylet带有自己的轻量级且非常快速(但仍功能强大)的IoC容器,尽管您可以根据需要轻松使用另一个容器。

MIT许可证
Stylet是根据MIT许可证分发的,该许可证允许您修改Stylet并将其包含在商业项目中,而无需注明出处(唯一的限制是您必须包括许可证的副本)。如果您需要,我愿意根据具体情况重新授权。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/cxb2011/article/details/105676005

智能推荐

linux 进程控制 sleep (),Linux进程控制(二):进程的创建_weixin_39626927的博客-程序员秘密

8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?Linux下有四类创建子进程的函数:system(),fork(),exec*()祖函数,popen()二.system函数2.1.原型#include int system(const char *string);system函数通过调用shell程序/bin/sh –c来执行string所指定的命令,该函数在内部是通...

[CVPR2018] An Analysis of Scale Invariance in Object Detection – SNIP_米可若丝的博客-程序员秘密

An Analysis of Scale Invariance in Object Detection – SNIP简介分类和检测的难度差异各种对付尺度变化的方法作者抛出的两个问题分析现存的解决方法浅层小物体, 深层大尺度特征融合/特征金字塔多尺度分类问题CNN-B: 原图训练 / 伪高清测试CNN-S: 低清训练 / 低清测试CNN-B-FT: 原图训练, 伪高清微...

怎样用计算机进入手机驱动程序,电脑没有手机驱动如何解决?_usotsuki1993的博客-程序员秘密

电脑没有手机驱动怎么办呢?一般用户要想通过电脑来安装软件,操作手机,就必须先安装手机驱动,不过很多用户却发现电脑没有手机驱动,那么电脑没有手机驱动如何解决?下面小编为大家介绍一下电脑没有手机驱动的解决方法。电脑没有手机驱动的解决方法:1、这里以HTC手机为例,其他的手机也是一样。下载驱动后解压,然后用数据线连接电脑和手机,会弹出新硬件的提示,一般驱动都会自动安装失败,所以我们就要手动安装驱动。2、...

大数据bug 笔记之Azkaban web-server节点启动问题_azkaban重启服务_ChlinRei的博客-程序员秘密

大数据bug笔记之Azkaban问题发现azkaban web-server 节点不能启动问题。azkaban安装完成后,启动服务exec-server与web-server,jps发现web-server的节点没起来。解决问题首先,检查配置文件,看文件是否有差错;如果没有,第二步执行start-web.sh shell脚本文件,再进入到azkaban/web-server目录下查看webServerLog日志;如果没有日志,则进入azkaban/web-server/bin目录,bin目录下

JQuery boxy插件的确认框在AspNet中的应用_weixin_30781631的博客-程序员秘密

JQuery有不少弹出框的插件,boxy应该算的上是功能和效果都还不错的一款了。先来看一张效果图吧。在Web开发中经常会使用到Alert和Confirm弹出框,在Asp.Net中的删除按钮上我们常常会加上删除的确认提示,以避免误删除数据,就像上面图片那样。我们一般会写出这样的代码。<html xmlns="http://www.w3.org/1999/xhtml" &g...

nodejs如何将获取的微信用户信息插入数据库_如何测试微信小程序信息传入数据库了node.js_小北在远方的博客-程序员秘密

nodejs获得微信用户并插入到数据库步骤:1.创建数据库db.js2.创建用户对象User3.引入微信api4.强制建表5.接受用户信息,插入数据库6.执行程序,得到结果更多微信开发代码,请关注公众号‘码农的道路’...

随便推点

重构-改善既有代码的设计(一):第一个案例_东晨雨的博客-程序员秘密

1、分解并重组长函数(1)代码块越小,代码功能就越容易管理(2)重构之前先检查是否有一套可靠的测试机制(3)做了修改就要编译并测试,保证自己没有破坏任何东西2、更改变量名称(1)代码应该表现自己的目的3、移动函数(1)一般函数应该放在它所用的数据的所属对象内(2)有时保留旧函数,调用新函数,如果旧函数是public,不必修改其他接口4、尽量去除临时变量(1)...

Android横屏竖屏判断--全屏设置--取屏幕宽高_D调的忧伤的博客-程序员秘密

这些代码都要放在Activity里。横屏竖屏判断方法1:mActivity.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE;// 横屏方法2:DisplayMetrics dm = new DisplayMetrics();mLauncher.g

Echarts 图表宽度高度自适应解决方案_弹出层 echarts 高度_最美dě陪伴的博客-程序员秘密

1,宽度var domBarOrganization = document.getElementById("containerbarorganization");var myChartBarOrganization = echarts.init(domBarOrganization);var app = {};optionbarorganization = null;/*app...

Ubuntu9.10下 php(FastCGI PHP-FPM)+Nginx+........._weixin_30594001的博客-程序员秘密

ubuntu安装部分省略N.M.P 下面开始安装编译安装php nginx等所需要包(有的是在ubuntu的源里有的是自己下载源代码编译安装) 一、安装build-essential(包括gcc c++(g++)等)、 autoconf、 automake、 m4 apt-get install build-essential autoconf automake 二、安装支...

下载!《Linux 命令行大全》pdf_weixin_38754349的博客-程序员秘密

code小生一个专注大前端领域的技术平台公众号回复Android加入安卓技术群今天跟大家推荐个 Linux 命令行教程:《The Linux Command Line》,中文译名:《L...

javaScript中的继承方式12种_爱酷的桥俏皮的博客-程序员秘密

javaScript中的对象的继承方式摘自《JavaScript面向对象编程指南(第二版)》