我有一個很難得到我的一個自定義的活動設計器中的工作流設計器以顯示。我的活動包括活動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'示例。 –