Workflow Foundationでカスタムアクティビティやデザイナーを使用する際に問題が発生しています。以下に示すように、質問のために、私は、非常に単純なアクティビティを作成しました:Workflow Foundation - カスタムデザイナーでInArgumentを割り当てる
[Designer(typeof(TesteDesigner))]
public sealed class Teste : CodeActivity
{
// Define an activity input argument of type string
[RequiredArgument]
public InArgument<string> Text { get; set; }
// If your activity returns a value, derive from CodeActivity<TResult>
// and return the value from the Execute method.
protected override void Execute(CodeActivityContext context)
{
// Obtain the runtime value of the Text input argument
string text = context.GetValue(this.Text);
}
}
、デザイナーは以下の通りです:
<sap:ActivityDesigner x:Class="ActivityDesignerLibrary1.TesteDesigner"
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"
xmlns:System="clr-namespace:System;assembly=mscorlib"
xmlns:Converters="clr-namespace:System.Activities.Presentation.Converters;assembly=System.Activities.Presentation">
<sap:ActivityDesigner.Resources>
<Converters:ArgumentToExpressionConverter x:Key="ArgumentToExpressionConverter" />
</sap:ActivityDesigner.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock Text="Valor: "
VerticalAlignment="Center" />
<sapv:ExpressionTextBox HintText="Valor"
Expression="{Binding Path=ModelItem.Text, Mode=TwoWay, Converter={StaticResource ArgumentToExpressionConverter}, ConverterParameter=In}"
ExpressionType="{x:Type System:String}"
OwnerActivity="{Binding Path=ModelItem}"
UseLocationExpression="True"
Grid.Column="1"
Margin="3,0,0,0" />
</Grid>
</sap:ActivityDesigner>
私はテキストボックスに何かを入力すると、私はエラーが発生します:無効なl-value式ですが、プロパティグリッドに値を入力するとTextBoxが更新されます。
誰もこれを見たことがありますか?
ありがとうございました。
SSCCEは正しいですか?そのままでは、デザイン時に、 'Text'は* null *になります。これは、最初にArgumentToExpressionConverterで問題を引き起こす可能性があります。あなたの 'Activity'内で' IActivityTemplateFactory'を実装し、 'Text'を新しい' InArgument 'と同じように設定して、あなたのワークフローを再作成します(ツールボックスからデザイン面にドラッグしてください)。もしそうなら、私に知らせてください、そして、私はこれをaddlの詳細の答えに変換します。 –
Will
IATFについての詳しい情報が必要な場合は、[どのように動作し、どのように使用されているのかについての私の回答をチェックしてください(http://stackoverflow.com/search?q=user%3A1228+is%3Aanswer+IActivityTemplateFactory)。 – Will
'Text 'は設計時にはnullになりません。正しくバインドすると、 'ExpressionTextBox'に何かを書く時からnullにはなりません。さもなければ、あなたは 'CacheMetadata'でバリデーションを行うことができません。 – Joao