工作流基础 - 在自定义设计器中分配参数
本文关键字:分配 参数 自定义 工作流 | 更新日期: 2023-09-27 17:57:07
我在工作流基础中使用自定义活动和设计器时遇到问题。为了解决这个问题,我创建了一个非常简单的活动,如下所示:
[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 值表达式无效,但如果在属性网格上键入值,文本框将更新。
有人见过这个吗?
谢谢。
从 XAML 中删除 UseLocationExpression 属性或将其转换为 False。其余代码似乎是正确的。
检查 MSDN 上的属性备注:
位置表达式(或 L 值表达式)是一种表达式类型 计算结果为标识符,可以放在左侧 赋值语句的一侧。当您绑定 表达式文本框 到 Out 参数,您可以将此属性设置为 真。
它仅在您想要绑定 OutArgument 时使用。