概念
本节将指导您了解WinForms MVVM的主要方面以及使用DevExpress MVVM框架实现它,所有主题在Mvvm Best Practices演示中都有相关的示例,相关的通知显示在每个新部分之前(见下图)。
此演示具有实时预览功能,这意味着您可以修改示例代码并立即看到结果,此外每个示例都可以作为单独的解决方案在Visual Studio中打开。
有帮助的文章
MVVM框架处理您的应用程序代码,并用自己的方式解释特定的代码片段,例如如果语法正确,属性可以被认为是可绑定的,这些语法规则称为约定。约定可以避免编写额外的代码,因为框架将“understand”您的期望,并自动生成所需的一切。本文档收集了在构建MVVM应用程序时需要了解的所有MVVM框架约定。
本文档演示了如何使用DevExpress MVVM框架提供的扩展方法构建流畅的API表达式。
本文档专门介绍数据绑定和通知,用于通知应用程序绑定对象更改其值,包含以下组。
- Concepts——描述了传统的“WinForms way”的数据绑定。
- Base Classes ——演示如何创建支持更改通知的可绑定属性。
- POCO Properties——介绍了POCO (Plain Old CLR Objects)类,由DevExpress MVVM框架支持。
- POCO Dependencies ——演示了如何实现依赖属性,当其他相关属性被修改时,依赖属性会更新它们的值。
- Meta-POCO Bindings——解释如何将OnPropertyChanged回调的声明移动到单独的元数据类中。
- Collection Bindings——描述如何从所需的源填充集合。
- UI Triggers——解释如何使用触发器来绑定应该更新其可视化状态的独立UI元素。
- Legacy and Nested ViewModels——演示如何使用子视图模型和遗留视图模型。
- Value Converters——这一组说明了如何转换可绑定的属性值。
解释如何将UI元素功能从事件处理程序移动到commands - objects特定操作的对象,在使用相关命令时执行。本文档包含以下章节:
- Delegate Commands——解释如何使用为同步执行的操作而设计的简单命令。
- POCO Commands——解释如何从POCO类的方法转换成命令,可以绑定到目标UI元素,并支持CanExecute行为。
- Asynchronous Commands——解释如何实现可以取消的延迟或连续任务的命令。
- Legacy Commands——这一组展示了如何使用在自定义的 non-POCO 中定义的命令。
本文档专门讨论服务——用于为MVVM应用程序中的视图提供特定的UI感知功能的接口,虽然服务是在视图中定义的,但它们的功能仍然可以从视图模型中调用,甚至可能不包括视图的信息。该文档包含两个部分:
- DevExpress Services——演示了如何使用由DevExpress实现的服务,您可以在本文中找到DevExpress服务的列表。
- Custom Services——解释如何创建,注册和使用自己的自定义服务。
Behaviors用于向对象添加特定的功能,而无需从内部修改它,例如通常单击选项卡或表单的关闭按钮会显示一个确认对话框,这不是关闭按钮的主要功能,应该被视为额外的功能。在MVVM应用程序中,您可以使用Behaviors来实现这一点。
- Confirmation Behavior——演示了如何用行为替换一个可取消的事件(e.g., the FormClosing event)。
- Event-to-Command Behavior——解释如何将为UI元素引发的任何事件与期望的行为关联起来。
- Custom Behaviors——说明如何实现和使用自定义行为。
由于MVVM模式是基于分离应用层的,因此您肯定需要一种方法来让分离的视图和视图模型相互通信。本文档介绍如何使用DevExpress Messenger实现此通信。
完全根据MVVM概念构建的应用程序将具有多个独立的视图和视图模型,有时来自不同的程序集。当需要导航到一个单独的应用程序模块时,MVVM框架需要知道它应该显示哪个特定的视图。从本主题中,您将了解如何在导航发生时传递所需视图的多种方法。