任务 2:承载工作流设计器
本主题介绍在 Windows Presentation Foundation (WPF) 应用程序中托管 Windows 工作流设计器实例的过程。
在此过程中将执行以下操作:配置包含设计器的 Grid 控件,以编程方式创建包含默认 Sequence 活动的 WorkflowDesigner 的实例,注册设计器元数据以提供针对所有内置活动的设计器支持,以及在 WPF 应用程序中承载工作流设计器。
承载工作流设计器
打开在任务 1:新建 Windows Presentation Foundation 应用程序中创建的 HostingApplication 项目。
调整窗口的大小,以便更轻松地使用工作流设计器。 为此,请在设计器中选择“MainWindow”,按 F4 以显示“属性”窗口,然后在“布局”部分中,将“宽度”设置为值 600,并将“高度”设置为值 350。
通过以下方式设置网格名称:在设计器中选择 Grid 面板(单击“MainWindow”中的框),并将“属性”窗口顶部的 Name 属性设置为“grid1”。
在“属性”窗口中,单击
ColumnDefinitions
属性旁边的省略号 (…),打开“集合编辑器”对话框。在“集合编辑器”对话框中,单击“添加”按钮三次以在布局中插入三个列。 第一列中包含“工具箱”,第二列将承载工作流设计器,第三列则供属性检查器使用。
将中间列的
Width
属性值设置为“4*”。单击“确定”以保存更改 。 以下 XAML 将添加到 MainWindow.xaml 文件中:
<Grid Name="grid1"> <Grid.ColumnDefinitions> <ColumnDefinition /> <ColumnDefinition Width="4*" /> <ColumnDefinition /> </Grid.ColumnDefinitions> </Grid>
在“解决方案资源管理器”中,右键单击 MainWindow.xaml 并选择“查看代码”。 按照以下这些步骤修改代码:
添加以下命名空间:
using System.Activities; using System.Activities.Core.Presentation; using System.Activities.Presentation; using System.Activities.Presentation.Metadata; using System.Activities.Presentation.Toolbox; using System.Activities.Statements; using System.ComponentModel;
若要声明某个私有成员字段包含 WorkflowDesigner 的实例,请将下面的代码添加到
MainWindow
类:public partial class MainWindow : Window { private WorkflowDesigner wd; public MainWindow() { InitializeComponent(); } }
将下面的
AddDesigner
方法添加到MainWindow
类。 在实现中,将创建 WorkflowDesigner 的实例,将 Sequence 活动添加到其中,并将该实例置于 grid1“网格”的中间列中。private void AddDesigner() { // Create an instance of WorkflowDesigner class. this.wd = new WorkflowDesigner(); // Place the designer canvas in the middle column of the grid. Grid.SetColumn(this.wd.View, 1); // Load a new Sequence as default. this.wd.Load(new Sequence()); // Add the designer canvas to the grid. grid1.Children.Add(this.wd.View); }
注册设计器元数据,为所有内置活动添加设计器支持。 通过此方法可以将活动从工具箱拖放到工作流设计器中的原始 Sequence 活动上。 为此,请将
RegisterMetadata
方法添加到MainWindow
类中:private void RegisterMetadata() { var dm = new DesignerMetadata(); dm.Register(); }
有关注册活动设计器的信息,请参阅如何:创建自定义活动设计器。
在
MainWindow
类构造函数中,添加对上文声明的方法的调用,以便注册设计器支持元数据,并创建 WorkflowDesigner。public MainWindow() { InitializeComponent(); // Register the metadata. RegisterMetadata(); // Add the WFF Designer. AddDesigner(); }
按 F5 生成并运行解决方案。
请参阅任务 3:创建“工具箱”和“PropertyGrid”窗格,了解如何向重新主机的工作流设计器添加工具箱和 PropertyGrid 支持。