回答

3

如果遵循一些規則,這很容易。下面是有一個孩子一個NativeActivity的示例:

[Designer(typeof(MyActivityDesigner)), ContentProperty("Child")] 
public sealed class MyActivity : 
    NativeActivity, IActivityTemplateFactory 
{ 
    // this "activity delegate" holds our child activity 
    public ActivityAction Child { get; set; } 

    // may be necessary to do this 
    protected override void 
     CacheMetadata(NativeActivityMetadata metadata) 
    { 
     metadata.AddDelegate(Child); 
    } 

    protected override void 
     Execute(NativeActivityContext context) 
    { 
     // do some work here, then 
     context.ScheduleAction(Child); 
    } 

    // better to use a template factory than a constructor to do this! 
    Activity IActivityTemplateFactory 
     .Create(System.Windows.DependencyObject target) 
    { 
     return new MyActivity 
     { 
      // HAVE to have this set, or it fails in the designer! 
      Child = new ActivityAction() 
     }; 
    } 
} 

注意的幾件事情:我們使用活動委託類型來保存我們的孩子。其次,我們實現了IActivityTemplateFactory來爲設計者配置我們的活動。它總是比構造器中的東西更好/更穩定。我們將綁定到代理的屬性,所以我們必須設置一個實例;否則綁定將失敗。

當我們執行時,您所要做的就是安排您的孩子在適當的時候回來。當然,你不應該阻止。

然後,在設計師,你會綁定到兒童是這樣的:

<sap:WorkflowItemPresenter 
    HintText="Add children here!" 
    Item="{Binding Path=ModelItem.Child.Handler}" /> 
+0

你可能會告訴我你使用哪個命名空間來使用Designer屬性? – jlafay 2010-07-23 16:00:27

+2

以供將來參考,只需搜索MSDN中的「DesignerAttribute」或您正在尋找的任何內容即可。它會告訴你它所在的程序集,在這種情況下,它是System.ComponentModel – Will 2010-07-23 16:14:19

0

您需要從NativeActivity開始,而不是從CodeActivity開始。 NativeActivity可讓您通過其執行上下文安排子活動。 NativeActivity沒有模板,只需創建一個類並從NativeActivity派生。

+0

謝謝莫里斯。因此,NativeActivity允許我創建在VS工作流設計器上顯示執行主體的活動?我希望能夠編寫序列,平行,while,foreach等活動,這些活動具有執行塊,我的活動的用戶可以在活動中放置其他活動。 – jlafay 2010-06-24 12:48:46

+0

對此有何意見?你沒有真正解決我的問題的實際情況。 – jlafay 2010-07-22 21:35:45

+0

查看Matt的博客文章,這聽起來像是你在找什麼:http://blogs.msdn.com/b/mwinkle/archive/2009/12/24/swiss-cheese-and-wf4-or- an-introduction-to-activityaction.aspx – Maurice 2010-07-23 06:34:58

2

臨WF:Windows工作流是.NET 4本書由布魯斯·Bukovics也有很多例子。你可能想檢查一下。

+1

謝謝dmelinosky,我只是把它拿起來了,我正在深入挖掘。對於任何以WF或WF4開頭的人,絕對拿起那本書,這很棒。 – jlafay 2010-07-27 14:10:18

相關問題