Ran*_*gel 230 wpf frameworks mvvm
我正在使用MVVM模型开发一个应用程序,但我已经达到了需要选择使用哪个框架的程度.
可能的选择包括:
根据您的经验,哪个更好?
Pet*_*lon 194
这实际上取决于您要实现的目标,以及您想要的基础设施数量,以及您可以轻松找到可以帮助您的样本.我将在这里宣布一个兴趣,因为我已经积极参与至少一个MVVM框架,并且我已经通过WPF Disciples小组输入了其他人,所以我有点偏颇.说,这里说:
微软MVVM工具包 - 这仍处于alpha阶段.当它最初被释放时,由于它没有做到这一点,它从门徒那里受到了一些野蛮的打击.说,MS正在寻求加强这个框架,所以它是一个值得关注的 - 它还没有准备好.
MVVM Foundation - 啊Josh Smith的框架版本.Josh是MVVM的老兄之一,并且一直是该模式的倡导者和教师.因此,你在其他框架中发现的很多东西都有Josh的指纹.该框架旨在提供MVVM的基础知识,而不是解决一些更深奥的问题.最初这只适用于WPF,但像Laurent Bugnion和我这样的人添加了功能/项目,这意味着这也将是一个Silverlight兼容框架.
WAF - 没有它的经验,所以我不能评论它我害怕.
MVVM Light - Laurent Bugnion对它的看法,刚刚更新到版本2.这是一个非常好的框架,但它并不打算涵盖MVVM应用程序的每一个方面.鉴于Laurent的背景,它具有非常强大的Silverlight和Blendability支持.
更新 Laurent刚刚通知我,.NET 3.5和.NET 4.0版本兼容功能.Wau要去Laurent.
Cinch - Sacha Barber的优秀WPF唯一MVVM框架.这比我上面谈到的框架更多.这是一个优秀的框架,并利用Bill Kempf优秀的Onyx项目中涵盖的概念.Onyx旨在补充MVVM框架,并增加了人们在MVVM/WPF中很难做到的功能.同样,最初只打算成为WPF,Onyx已经发展到包括SL兼容性 - 我特别自豪地参与其中.
棱镜 - 再一次,我从来没有使用它,但我听到了很多关于它的好东西.
Ocean - Cider团队项目经理Karl Shifflett最近发布了一个功能齐全的WPF MVVM框架.同样,这是一个很好的框架,有很多可以推荐它.
最重要的是,下载不同的框架,看看它们,并根据您的思考方式和您的要求找出哪一个最直观.如果您认为您可能希望从相同的代码库支持Silverlight,则应仅打折WPF框架.
Nas*_*loo 54
我发现这篇文章非常有用http://www.japf.fr/2009/10/a-quick-tour-of-existing-mvvm-frameworks/所以我把它带给了即将到来的用户
我更新了Cinch部分并为其功能添加了silverlight支持
对不起,我很抱歉
共同特征:
•ViewModelBase类(用于实现INotifyPropertyChanged接口)
•RelayCommand类将UI命令链接到ViewModel的处理程序
•单元测试随框架一起提供
肚带
•作者:Sacha Barber
•Silverlight支持:否(Cinch版本2支持Silverlight)
•文档:优秀,在CodeProject上发表了6篇文章
•托管:CodePlex
•许可证:代码项目开放许可证
• 特征:
附加行为
使用IDataErrorInfo进行验证
支持IEditableObject
弱事件创建和订阅
使用弱事件的调解员消息传递
IOC/DI支持(使用Unity)
服务:事件记录器,消息框,打开保存对话框,弹出窗口
线程助手
支持菜单项
可关闭的视图模型
MVVM代码生成器
MVVM Light Toolkit
•作者:Laurent Bugnion
•Silverlight支持:是的
•文档:Laurent博客+其他开发人员提供的许多文章
•托管:CodePlex
•许可证:MIT许可证
• 特征:
MSI安装程序
VS项目和项目模板
VS代码片段
用于视图间模型通信的Messenger系统
将事件作为命令处理
MVVM助手
•作者:马克史密斯
•Silverlight支持:没有
•文档:Mark的博客上的一些文章
•托管:个人网站
•许可证:未定义
• 特征:
附加行为
使用标记扩展创建viewmodel
基于属性的验证
IOC/DI使用ServiceProvider方法
可关闭的viewmodel
等待游标(使用新的WaitCursor(){//你的代码在这里})
MVVM基金会
•作者:Josh Smith
•Silverlight支持:没有
•文档:关于Josh或Marlon Grech博客上Messenger实现的文章
•托管:CodePlex
•许可证:MS-PL
• 特征:
用于视图间模型通信的Messenger系统
PropertyChanged事件监视器
卡利
•作者:Rob Eisenberg
•Silverlight支持:是的
•文档:提供完整的在线文档
•托管:CodePlex http://www.codeplex.com/caliburn
•许可证:MIT许可证
• 特征:
命令构建在Actions之上,因此共享许多相同的功能,包括多个输入参数,过滤器和自动异步执行
处理UI生命周期问题的演示者,例如处理各种UI组件的激活,停用和关闭语义
Caliburn应用程序是完全可测试的
各种实用程序,例如后台任务管理器
支持各种UI模式(不仅限MVVM)
依赖注入容器
缟玛瑙
•作者:William e Kempf
•Silverlight支持:没有
•文档:CodePlex上提供的基本介绍
•托管:CodePlex
•许可证:未指定
• 特征:
ServiceLocator模式
使用自定义标记扩展创建ViewModel
UI相关服务,如IDisplayMessage
钙
•作者:Daniel Vaughan
•Silverlight支持:没有
•文档:关于CodeProject的2篇非常详细的文章(第1部分和第2部分)
•托管:CodePlex
•许可:使用,复制,修改和/或分发并保留版权!
• 特征:
模块管理器,用于在运行时启用或禁用模块
消息传递服务,用于使用相同的API从客户端或服务器与用户交互
命令服务将WPF ICommands与仅在活动视图或视图模型实现接口时才变为活动状态的内容接口相关联
工具栏和菜单的区域适配器
客户端 - 服务器日志记录已准备好开箱即用
包括模块,例如Web浏览器,文本编辑器,输出窗口等等
带有脏文件指示的选项卡式界面(可跨模块重复使用)
nRoute
•作者:Rishi
•Silverlight支持:是的
•文档:作者博客上提供了许多文章(参见CodePlex项目主页的链接)
•托管:CodePlex
•许可证:MS-PL
• 特征:
支持Blend3行为和触发器模型
资源定位框架
查看服务:OpenFileDialog,ShowMessage ......
使用属性将View和ViewModel一起映射
Nito MVVM
•作者:Shammah
•Silverlight支持:没有
•文件:没有
•托管:CodePlex
•许可证:未指定
• 特征:
- ICommand接口的各种MVVM友好实现
海洋
•作者:Karl Shifflet
•Silverlight支持:没有
•文档:Karl博客上提供的文章
•托管:个人网站
•许可证:未指定
• 特征:
用VB.Net编写
基于属性的验证
viewmodel基类:relaycommand,closeableviewmodel ...
SQL服务器数据访问层
基本的MVVM框架
•作者:Lester Lobo
•Silverlight支持:没有
•文档:库提供的示例应用程序
•托管:CodePlex
•许可证:MS-PL
• 特征:
委派命令\ Keybinding
VM之间的消息传递
将事件处理为具有附加行为的命令
处理对话框(以及更多)作为服务
VS代码片段
GoodLight
•作者:Peter O'Hanlon•Silverlight支持:是的
•文档:库提供的示例应用程序
•托管:CodePlex
•许可证:MS-PL
• 特征:
"工作区"管理(可以关闭的文档集)
皮肤支持
VM之间的消息传递
jbe*_*jbe 44
我试着描述Pete最好的答案中遗漏的框架:
MVVM Toolkit(Microsoft)是一个非常轻量级的库,带有Visual Studio项目模板,应该支持具有此模式的初学者.如果微软获得了对他们的Toolkit的良好反馈,那么他们可能会将其作为一个新的Visual Studio(可能是2010年)项目模板来实现.
Prism(Microsoft p&p)是一个框架,它提供的不仅仅是对MVVM模式的支持.该项目的主要目标是帮助您构建模块化 WPF和/或Silverlight应用程序.当您只需要实现MVVM模式或者您是.NET/WPF的初学者时,我不会推荐这个项目.另见:链接.
WPF应用程序框架(WAF)是一个轻量级框架,可帮助您使用MVVM创建WPF应用程序.它仅适用于WPF,因此不支持Silverlight.与引入控制器的大多数其他MVVM框架相比,它有点不同.他们负责应用程序工作流程,并在各种ViewModel之间进行调解.
Pie*_*ten 19
咩.Mvvm并不需要整个框架来支持IMO.如果您理解这个概念,那么从一个实现INotify的干净VM基类开始就非常简单,只需从那里开始.
And*_*nea 10
混合你自己!
我使用PRISM的EventAggregator,MVVM基础的ViewModelBase等等.我还调整了RelayCommand(在某些地方调用了DelegateCommand)以接受其他数据,依此类推.
我不建议只使用一个框架.
小智 8
我的赌注将在Caliburn和MVVMlight上,似乎这些mvvm框架中很少有人支持Silverlight.我可以预见会有更多的MVVM框架可供选择,而不是IoC框架,因为设置mvvm框架的功能边界更加困难.我想找出哪一个更适合你的项目的最好方法是列出/比较它们的功能.
另请查看Mix10.我从谈话中学到了很多东西:构建你的mvvm框架.
我正在使用 Prism 并且喜欢它。对我来说最重要的事情之一是,如果需要,还有其他人可以帮助我,并提供好榜样。一旦你掌握了基础知识,你的应用程序就需要一大堆扩展,当你使用与其他框架相同的框架时,它会变得更加容易。
| 归档时间: |
|
| 查看次数: |
64094 次 |
| 最近记录: |