Iva*_*van 9 c# wpf mvvm winforms
记住CannibalSmith曾经说过的话 - "所有的答案都说"WPF是不同的."这是一个巨大的轻描淡写.你不仅需要学习很多新东西 - 你必须忘记你从Forms学到的一切.这完全是一个做UI的新方式."
..并且拥有多年的可视化Windows桌面应用程序开发经验(VB6,Borland C++ Builder VCL,WinForms)(很难忘记),如何快速开发到使用Visual Studio进行格式良好的WPF应用程序?
我不需要boozy-woozy图形来给我的应用程序外观和感觉好莱坞大片或百万美元的睡衣.我总是喜欢标准Windows常用控件和UI设计指南的整洁,最后我更喜欢Vista Glass Aero Graphite酱.
我对WinForms非常满意,但我希望我的应用程序能够使用最高效和最新的标准技术构建,并根据当前和未来最高效,最灵活的模式进行架构,利用基于接口的集成和功能重用并利用现代硬件和API的所有优势,最大限度地提高性能,可用性,可靠性,可维护性,可扩展性等.
我非常喜欢分离视图,逻辑和数据的想法,让视图充分利用平台的优势(可以在瘦客户端上作为Web浏览器小程序运行,也可以在具有最新GPU的PC上作为桌面应用程序运行) ,让逻辑得到重用,并行化和无缝发展,将数据以结构良好的格式存储在正确的位置.
但是......从VB6迁移到Borland C++ Builder非常简单(没有书籍/教程需要打开它并开始工作)(假设我已经知道C++),从BCB转移到WinForms是一样的无缝,它没有对我来说,如何处理WPF似乎显而易见.
那么,我如何才能最好地将自己从WinForms开发人员转变为正确思考并做WPF开发人员?
请记住,MVVM 似乎只适合单窗口应用程序。基于缺乏经验和一般建议,我深入研究了 WPF,认为它更适合自助服务终端项目,尤其是客户向我提供了所有应用程序屏幕的 Photoshop 图像的项目。拥有很酷的图形是这个项目的要求,我喜欢 WPF 与 Web 开发的模糊相似之处。
我发现了一些缺点
1) 不存在官方的 MVVM 工具包。他们有很多,都有一个人支持。一年前,Microsoft 开发的工具包已被搁置,并且没有 VS2010 支持。
2) 编写一个多窗口应用程序(类似于带有后退和前进功能的简单向导)简直是一场噩梦。我通过一个干净的设计摆脱了这个问题,为每个 UI 操作定义了一个委托,为每个业务操作定义了一个命令,但我仍然认为它过多地涉及框架是不合理的,并且您无法将测试结果显示给这位顾客期待兴奋。
3)你放弃了双击按钮并添加一些代码的习惯。这给人一种使用 IDE 违背其本质的挥之不去的感觉。基本上,您使用 Visual Studio 作为文本编辑器和界面设计器,仍然得到该工具的巨大帮助。
到目前为止,优点是:
1)定义可视化组件非常灵活、快速、简单,您可以在VS和Expression Blend之间进行选择。动画的创建很简单。
2) 数据绑定简化了应用程序。您定义 DataContext 和绑定,并且不必自己将数据从业务逻辑移动到界面,只要您拥有必须显示的所有内容的属性即可。
3)可以将界面中的业务逻辑量减少到零。将应用程序行为与其外观分开很容易,因此您可以毫不费力地以十种不同的方式设计界面,并在不打开窗口的情况下测试所有逻辑。
4) 如果他们要求的话,你可以选择使用 Silverlight。
我的结论是,如果您考虑使用 MDI 应用程序,您可能会发现自己遇到了大麻烦。您应该意识到,如果您选择 WPF,您就是在为子孙后代耕耘,而不是搭乘一列快速轻松到达目的地的火车。没有既定的方法来做事情,尤其是那些演示未涵盖的事情。
综合考虑,工具包并不是那么重要,它们中的每一个都会很好地为您服务。事实上,几个支持类就足以开始,并且没有花哨的向导,这取决于您遵循约定。
一旦您了解了逻辑所涉及的内容,您甚至可以花几个小时自己制作。缺点是您必须真正理解它才能以自己的方式改变应用程序。
正如我上面所说,我必须学习很多知识才能在他们单击按钮时显示新视图以保持代码整洁。花点时间观看StackOverflow 上其他地方引用的视频这会节省您的时间。
归档时间: |
|
查看次数: |
1095 次 |
最近记录: |