登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
博客
发1篇日志+1圆
记录
发1条记录+2圆币
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
VIP网盘
VIP申请
网盘
联系我们
道具
勋章
任务
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
WPF优秀项目推荐:Stylet 一个非常轻量但强大的 ViewMod ...
WPF优秀项目推荐:Stylet 一个非常轻量但强大的 ViewModel-First MVVM 框架
[ 复制链接 ]
巨耗
4 小时前
Stylet介绍
Stylet 是一个小型但功能强大的 ViewModel 优先的 MVVM 框架,适用于 WPF (.NET 4.5.2+ 和 .NET Core 3.0+),它允许您编写易于测试的可维护和可扩展的代码。
Stylet 的目标是:
解决没有框架时阻碍 MVVM 开发的障碍、烦恼和不便,使用简单但强大的概念。
对于第一次接触您项目的人员来说是显而易见的:几乎没有什么魔法。
易于验证/验证。代码行数较少,并附有非常全面的测试套件。代码编写良好且文档齐全。
提供灵活性同时提供合理的默认值。框架的几乎任何部分都可以根据需要重写,但您可能不需要这样做。
它受到 Caliburn.Micro 的启发,分享了其许多概念,但去除了大多数魔法(用更强大的替代方案替换),并通过仅针对 MVVM、WPF 和 .NET 4.5.2 大幅简化了部分功能。
GitHub地址:https://github.com/canton7/Stylet
如何快速入门
第一,有一个Samples,克隆代码之后,可以先打开这个示例项目。
通过运行这几个项目,可以快速了解Stylet提供了什么功能。
第二,查看官方文档。
Style的官方文档地址:https://github.com/canton7/Stylet/wiki
作者通过这几个方面进行了说明:
现在就一起简单地看看Stylet的一些概念与设计!!
首先最重要的就是
ViewModel优先!!
经典的MVVM结构中,视图知道如何实例化其ViewModel,而ViewModel通常不会直接通信,这种模式被称为视图优先。然而,反转这种模式——自己实例化ViewModel,然后让视图自动附加——提供了许多优势,使你可以以一种非常熟悉的方式组合你的ViewModel。这种ViewModel优先的方法是Stylet唯一支持的方法。
在Stylet中可以通过ViewModel自动绑定到对应的View,这样的话,就可以这样写:
在xaml文件中可以通过ViewModel找到对应的视图,非常方便!!
第二点就是
Action!!
WPF 中使用的 ICommand 接口功能强大,但在 MVVM 架构中使用时显得笨拙。让 ViewModel 中响应按钮点击等操作的方法表示为属性而不是方法似乎不合逻辑。一个简单的 将导致每次点击按钮时调用 ViewModel 中的 DoSomething()。此外,如果你有一个名为 CanDoSomething 的布尔属性,它会被观察并用于确定按钮是否应启用或禁用。
Action还可以与事件一起使用,例如
。
在WPF中如果想要实现原生的命令还是挺麻烦的,虽然现在也有很多库可以简化了,但是看到Stylet这样的写法还是会被惊艳到,真的很方便!!
比如你在ViewModel中写了一个这样的方法:
public void NavigateToPage1() => this.navigationController.NavigateToPage1();
复制代码
在xaml中,你只要这样写就可以绑定上:
第三点就是
属性通知的简化写法
Stylet自己封装了一个SetAndNotify,简洁了一点。
第四点就是
实现了一个简单的IOC容器
,在程序开始时会扫描程序集,把ViewModel都自动瞬态注入进去,因此你可以在Bootstrtapper中不需要自己显示注册,这样也方便了很多,体现了约定大于配置的思想吧。
当然也可以自己显示注册,比如这样的写法:
protected override void ConfigureIoC(IStyletIoCBuilder builder)
{
builder.Bind<NavigationController>().And<INavigationController>().To<NavigationController>().InSingletonScope();
}
复制代码
第5点就是
实现了一个基类Screen
Screen 实现了
IActivate、IDeactivate、IGuardClose
等接口,允许你在视图模型激活、关闭时执行逻辑。
方法/属性作用说明OnActivate()当 ViewModel 被导航到或激活时调用OnDeactivate(bool close)当 ViewModel 被关闭或导航销毁时调用TryClose(bool? dialogResult = null)请求关闭当前 Screen第六点是
提供了一个WindowManager
Stylet已经自动注册了,可以直接通过构造函数注入。
使用也很简单,有ShowDialog,这个会阻塞,适合需要用户确认才执行的情况;有ShowWindow,这个不会阻塞会直接显示一个窗体。
需要注意的是ViewModel对应的View需要继承自Window。
第7点是
自带了一个The EventAggregator
也是跟WindowManager开箱即用,非常方便。
最后
虽然这个框架已经有一年多没有更新了,但是说实话这个框架用来构建中小型项目还是很方便的,感谢开源者的付出,感兴趣的朋友也可以探索一下这个框架。这个框架确实配的上它的简介:Stylet 一个非常轻量但强大的 ViewModel-First MVVM 框架。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
巨耗
4 小时前
关注
0
粉丝关注
12
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
敖可
9984
凶契帽
9990
黎瑞芝
9990
4
杭环
9988
5
猷咎
9988
6
接快背
9988
7
里豳朝
9988
8
氛疵
9988
9
葛雅隽
9988
10
恐肩
9986
查看更多