重新承载设计器
本主题适用于 Windows Workflow Foundation 4。
设计器重新承载是一个常用方案,它是指在自定义应用程序内部承载工作流设计画布。Visual Studio 是大多数人所熟知的承载应用程序,然而在很多方案中,应用程序中的工作流设计器可能会很有用:
监视应用程序(允许最终用户直观地查看进程以及有关进程的运行时数据,例如,当前活动状态、聚合执行时间数据或其他关于工作流实例的信息)。
允许用户使用有限的活动集合自定义进程的应用程序。
为了支持这些类型的应用程序,.NET Framework 内附带了工作流设计器,它可以在 WPF 应用程序内或在具有适当的 WPF 承载编码的 WinForms 应用程序内承载。此示例演示:
重新承载 WF 设计器。
使用重新承载的工具箱和属性网格。
重新承载设计器
此示例演示如何创建 WPF 布局以包含在以下网格布局中可见的设计器(因空间有限,省略工具箱编码)。需注意包含设计器和属性网格的边框的命名。
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="7*"/>
<ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>
<Border Grid.Column="0">
<sad:ToolboxControl> ... </sad:ToolboxControl>
</Border>
<Border Grid.Column="1" Name="DesignerBorder"/>
<Border Grid.Column="2" Name="PropertyBorder"/>
</Grid>
接下来,此示例创建设计器,并将其主 View 和 PropertyInspectorView 与用户界面中适当的容器相关联。以下示例中有几行额外的代码需要解释一下。需要调用 Register 来为 .NET Framework 附带的活动关联默认的活动设计器。调用 Load 传入要编辑的 WF 项。最后,将 View(主画布)和 PropertyInspectorView(属性网格)放置在用户界面的图面上。
protected override void OnInitialized(EventArgs e)
{
base.OnInitialized(e);
// register metadata
(new DesignerMetadata()).Register();
// create the workflow designer
WorkflowDesigner wd = new WorkflowDesigner();
wd.Load(new Sequence());
DesignerBorder.Child = wd.View;
PropertyBorder.Child = wd.PropertyInspectorView;
}
使用重新承载的工具栏
此示例在 XAML 中以声明方式使用重新承载的工具箱控件。请注意,在代码中可以将一个类型传递给 ToolBoxItemWrapper 构造函数。
<Window.Resources>
<sys:String x:Key="AssemblyName">System.Activities.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35</sys:String>
</Window.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="7*"/>
<ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>
<Border Grid.Column="0">
<sad:ToolboxControl>
<sad:ToolboxControl.Categories>
<sad:ToolboxItemCategory CategoryName="Basic">
<sad:ToolboxItemWrapper AssemblyName="{StaticResource AssemblyName}" >
<sad:ToolboxItemWrapper.ToolName>
System.Activities.Core.Sequence
</sad:ToolboxItemWrapper.ToolName>
</sad:ToolboxItemWrapper>
<sad:ToolboxItemWrapper AssemblyName="{StaticResource AssemblyName}">
<sad:ToolboxItemWrapper.ToolName>
System.Activities.Core.WriteLine
</sad:ToolboxItemWrapper.ToolName>
</sad:ToolboxItemWrapper>
<sad:ToolboxItemWrapper AssemblyName="{StaticResource AssemblyName}">
<sad:ToolboxItemWrapper.ToolName>
System.Activities.Core.If
</sad:ToolboxItemWrapper.ToolName>
</sad:ToolboxItemWrapper>
<sad:ToolboxItemWrapper AssemblyName="{StaticResource AssemblyName}">
<sad:ToolboxItemWrapper.ToolName>
System.Activities.Core.While
</sad:ToolboxItemWrapper.ToolName>
</sad:ToolboxItemWrapper>
</sad:ToolboxItemCategory>
</sad:ToolboxControl.Categories>
</sad:ToolboxControl>
使用示例
在 Visual Studio 2010 中打开 DesignerRehosting.sln 解决方案。
按 F5 编译并运行应用程序。
一个 WPF 应用程序启动并显示一个重新承载的设计器。
注意: |
---|
您的计算机上可能已安装这些示例。在继续操作之前,请先检查以下(默认)目录:
<安装驱动器>:\WF_WCF_Samples
如果此目录不存在,请访问针对 .NET Framework 4 的 Windows Communication Foundation (WCF) 和 Windows Workflow Foundation (WF) 示例(可能为英文网页),下载所有 Windows Communication Foundation (WCF) 和 WF 示例。此示例位于以下目录:
<安装驱动器>:\WF_WCF_Samples\WCF\Basic\DesignerRehosting\Basic
|