如果你遵循一些规则,它就足够容易。 这里有一个有孩子的土著活动的例子:
[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()
};
}
}
注: 我们利用活动代表类型来抓孩子。 第二,我们实施IActativeTemplateFactory,为设计师安排我们的活动。 它总是做得更好/更稳定,而不是在建筑商中 st。 我们将对代表的财产具有约束力,因此我们必须树立榜样;否则,约束性将失败。
当我们被处决时,你们必须做的是酌情安排孩子和返回。 当然,你应该 block。
之后,在设计者中,你对孩子有同样的约束力:
<sap:WorkflowItemPresenter
HintText="Add children here!"
Item="{Binding Path=ModelItem.Child.Handler}" />