Workflow Foundation 4 第九課 - 活动设计器

来源:互联网 发布:太平洋软件站免费下载 编辑:程序博客网 时间:2024/05/18 00:37
1、 在 Solution Explorer 中,右键单击 解决方案,然后选择 Add / New Project…

    选择 Workflow 模板并选择 活动库。将项目命名为 HelloWorkflow.Activities。


2、先删除 Activity1.xaml,然后右键单击 HelloWorkflow.Activities 项目并选择 添加 / 新建项 (Ctrl+Shift+A)
      从 Workflow 模板中选择 代码活动 并将其命名为 PrePostSequence


3、 PrePostSequence 类原先内容:


把它删除,然后替换如下:


4、先建一个项目,选择 Workflow 模板并选择 活动设计器库。将项目命名为 HelloWorkflow.Activities.Designers


5、删除 ActivityDesigner1.xaml,右键单击 HelloWorkflow.Activities.Designers 项目并选择 添加 / 新建项
     从 Workflow 模板中选择 活动设计器 并将其命名为 PrePostSequenceDesigner


6、生成的模板如下:


使用以下内容替换模板 XAML

<sap:ActivityDesigner x:Class="HelloWorkflow.Activities.Designers.PrePostSequenceDesigner"
 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 xmlns:sap="clr-namespace:System.Activities.Presentation;assembly=System.Activities.Presentation"
 xmlns:sapv="clr-namespace:System.Activities.Presentation.View;assembly=System.Activities.Presentation">
    <StackPanel>
        <Border BorderBrush="Green" BorderThickness="4" CornerRadius="5">
            <sap:WorkflowItemPresenter Item="{Binding Path=ModelItem.Pre, Mode=TwoWay}" HintText="Insert Pre Activities Here"/>
        </Border>
        <Border BorderBrush="Red" BorderThickness="4" CornerRadius="5">
            <StackPanel>
                <Border BorderBrush="Black" BorderThickness="2" CornerRadius="5">
                    <TextBlock HorizontalAlignment="Center">Activities</TextBlock>
                </Border>
                <sap:WorkflowItemsPresenter Items="{Binding Path=ModelItem.Activities}" HintText="Insert Activities Here">
                    <sap:WorkflowItemsPresenter.SpacerTemplate>
                        <DataTemplate>
                            <Ellipse Fill="Red" Width="30" Height="30" />
                        </DataTemplate>
                    </sap:WorkflowItemsPresenter.SpacerTemplate>
                    <sap:WorkflowItemsPresenter.ItemsPanel>
                        <ItemsPanelTemplate>
                            <StackPanel Orientation="Vertical"/>
                        </ItemsPanelTemplate>
                    </sap:WorkflowItemsPresenter.ItemsPanel>
                </sap:WorkflowItemsPresenter>
            </StackPanel>
        </Border>
        <Border BorderBrush="Black" BorderThickness="4" CornerRadius="5">
            <sap:WorkflowItemPresenter Item="{Binding Path=ModelItem.Post, Mode=TwoWay}" HintText="Insert Post Activities Here"/>
        </Border>
    </StackPanel>
</sap:ActivityDesigner>

其中红色字体是垂直方式,原文选择的水平,下面左边可以改变方式,右边是展示的界面:

  

下图是替换完成后,按 CTRL+SHIFT+B 生成解决方案 后的展示:


7、从项目选项卡中,添加对 HelloWorkflow.Activities.Designers 的引用和添加以下命名空间指令及向 PrePostSequence 类添加以下属性

  

8、右键单击 HelloWorkflow 项目,然后选择 添加引用。从项目选项卡中选择 HelloWorkflow.Activities。按 CTRL+SHIFT+B 生成解决方案。

9、对HelloWorkflow.Tests 项目添加引用 HelloWorkflow.Activities


添加新测试:

     

10、添加 2 个新的输出参数来保存 PrePostSequence 的 Pre 和 Post 区域的消息


11、将 PrePostSequence 拖到 Finally 活动下方:

12、从工具箱中的基元组中将 Assign 活动拖到 Pre Activities 区域上并设置属性 To:PreMessage  Value:"This is Pre-Sequence"
       将另一个 Assign 活动拖到 Post Activities 区域上并设置属性 To:PostMessage Value:"This is Post-Sequence"


13、将两个 Assign 活动拖到 PrePostSequence 下方的红点活动区域中

14、按 CTRL+SHIFT+B 生成解决方案、按 Ctrl+R, A 运行所有测试,可以看到所有测试都能够通过




原创粉丝点击