MvvmContext
MvvmContext组件是使用DevExpress MVVM框架开发MVVM应用程序的关键工具,该组件的API在概念部分的帮助主题中进行了描述。本主题将演示MvvmContext在设计时的功能。
您可以通过单击组件右上角的相应按钮来调用MvvmContext智能标记,此智能标记的链接提供以下功能。
- Adding new ViewModels:
要添加与此视图相关的新ViewModel,请单击Add ViewModel 链接(参见下图)。
如果选中“Show generated code-behind”复选框,则ViewModel生成后,您将在代码中移动。
这个动作在定义视图的同一个文件(FormName.cs)中创建一个空白的ViewModel。对于现实生活中的应用程序,您可能希望所有的View和ViewModel都位于一个单独的文件中,并分组到相应的文件夹中,使用“Add DevExpress Item”菜单从模板库中添加一个“View和ViewModel”模板。
- Assigning a specific ViewModel to the MvvmContext:
使用智能标签内的下拉菜单选择分配给该组件的 ViewModel。如果清除Show All Types复选框,则仅显示同一文件中的公共类和包含.ViewModel 的命名空间(类除外,其名称以“Service”、“Message”、“Helper”和其他关键字结尾),否则下拉列表将显示所有适当的类,Hide Namespace 复选框隐藏类的命名空间名称,显示在下拉列表中。如果您想查看完整的类名称,请清除此复选框。
如果存在由MvvmContext组件生成的ViewModel,则会出现“Assign ViewModel”和“Remove ViewModel”选项(见下图)。单击这些链接只影响(分配给组件或删除)由组件生成的ViewModel,而不管当前分配给组件的是哪个ViewModel。
- Generating RibbonControl links for existing commands:
如果有一个按钮容器(例如,Ribbon Control或Bar Manager)位于承载MvvmContext组件的相同表单上,则Retrieve Commands链接显示如下图所示。
单击此链接将启动扫描ViewModel来查找常规命令和异步命令的进程,为每个找到的命令创建BarButtonItem,并将其绑定到相关命令,这些命令的名称用作按钮标题。如果命令具有标准名称之一(打开,保存,创建,新建,删除等),则会自动分配来自图片库和上下文相关图像的相关符号。
提示:默认情况下,自动生成的按钮将放在一个新的未命名的RibbonPageGroup中,您将需要重命名该组或手动重新排列按钮,还可以在命令之前使用特定的数据注释属性。诸如Display(GroupName)、DisplayName、Image/DXImage等属性将被识别并应用于自动生成的按钮。
如果要删除、恢复或修改任何生成的命令绑定,请单击下面的“Edit…”链接,这将调用绑定表达式编辑器,如下图所示。
在这里,您可以单击Add (Confirm)按钮的下拉菜单来添加所需的命令。下面的网格列出了已经添加的所有命令,在编辑器右侧的属性网格中,设置Target属性来指定该命令将绑定到的UI元素,该编辑器不必手动编写所有命令绑定,如Commands主题中所示。
- Registering services:
与自动生成功能区项目链接类似,单击控件智能标签底部的“检索服务”链接会使MvvmContext组件找到位于视图中所有与服务相关的控件,并在本地为每个控件注册相应的服务。例如,如果您的视图包含DocumentManager组件,DocumentManagerService将被注册,下面的“Edit…”链接调用服务编辑器(见下图),该编辑器提供添加新服务注册或修改现有服务注册的功能。
注意,相应的代码不是添加到ViewModel中,而是添加到View’s .Designer.cs file中。