我有一个很难得到我的一个自定义的活动设计器中的工作流设计器以显示。我的活动包括活动FUNC,我已经发现了一些与他们打交道here,here,here和here博客帖子。绑定错误<>
自定义活动具有ActivityFunc<>
作为输入参数,并且我需要以暴露在FUNC设计者作为其中用户可以将一个“内”活性(点菜TransactionScope
)放置区。
定制活动创作的XAML和FUNC的声明是这样的:
<x:Property Name="CompletionTest" Type="ActivityFunc(sdscmt:DmeTask, sdsav:WfPatient, sdscmc:DmeClinicalElement, x:Boolean)" />
的XAML还包含一个InvokeFunc<>
活动相匹配的CompletionTest
财产。
活动设计遵循上述mentionned的博客文章中概述的建议。特别是,它会覆盖OnModelItemChanged
初始化CompletionTest
属性:
if (this.ModelItem.Properties["CompletionTest"].Value == null)
{
this.ModelItem.Properties["CompletionTest"].SetValue(
new ActivityFunc<DmeTask, WfPatient, DmeClinicalElement, bool>()
{
Argument1 = new DelegateInArgument<DmeTask>
{
Name = "task"
},
Argument2 = new DelegateInArgument<WfPatient>
{
Name = "patient"
},
Argument3 = new DelegateInArgument<DmeClinicalElement>
{
Name = "element"
},
Result = new DelegateOutArgument<bool>
{
Name = "success"
},
});
}
设计师的XAML看起来像这样:
<sap:ActivityDesigner x:Class="SoftInfo.Dme.ServicesDme.Workflow.Design.PerformTaskDesigner" ... >
<StackPanel>
<sap:WorkflowItemPresenter AllowedItemType="{x:Type sa:Activity}" Background="Transparent" MinWidth="150" MinHeight="100" HintText="Drop the completion test here" Margin="5,5,5,5" Item="{Binding Path=ModelItem.CompletionTest.Handler, Mode=TwoWay}" />
</StackPanel>
</sap:ActivityDesigner>
这一切后,每当我把我的自定义活动的一个实例到工作流,我会看到一个标有“无法为PerformTask生成视图”的红色框,我的设计者应该出现在该框中。盒子的工具提示表明设计师发生了异常:
System.Windows.Markup.XamlParseException: A 'Binding' cannot be set on the 'Item' property of type 'WorkflowItemPresenter'. A 'Binding' can only be set on a DependencyProperty of a DependencyObject.
我不明白我在做什么错。我以前多次使用过WorkflowItemPresenter
,这是我第一次得到这个绑定错误。
谢谢。我熟悉'IActivityTemplateFactory',但没有在我的问题中提到它,因为无论我的自定义活动是否实现它,我都会得到相同的错误。我的实现类似于上面的'MyActivity'示例。 –