重新承载设计器

本主题适用于 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> 

接下来,此示例创建设计器,并将其主 ViewPropertyInspectorView 与用户界面中适当的容器相关联。以下示例中有几行额外的代码需要解释一下。需要调用 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>

使用示例

  1. 在 Visual Studio 2010 中打开 DesignerRehosting.sln 解决方案。

  2. 按 F5 编译并运行应用程序。

  3. 一个 WPF 应用程序启动并显示一个重新承载的设计器。

Dd699776.Important(zh-cn,VS.100).gif 注意:
您的计算机上可能已安装这些示例。在继续操作之前,请先检查以下(默认)目录:

<安装驱动器>:\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