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>
내가 텍스트 상자에 뭔가를 입력, I 오류가 발생합니다 : 잘못된 l 값 표현식,하지만 속성 표에 값을 입력하면 TextBox가 업데이트됩니다.
본 사람이 있습니까?
감사합니다. 당신의 XAML에서
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