我正在尝试为我的活动添加自定义活动设计器。活动看起来有点像:
public class WaitForUserInputActvitiy : NativeActivity
{
public InArgument<UserInteractionProperty[]> UserInteraction { get; set; }
}
我试图让设计人员参与活动,以便设置这些值更好一些(所以你不要直接输入VB。我的设计师基于mindscape属性网格。我有一个ObservableDictionary源代码我想从中获取值并将它们放入InArgument。目前我正在使用
private void TestGrid_LostFocus(object sender, RoutedEventArgs e)
{
using (ModelEditingScope editingScope = this.ModelItem.BeginEdit())
{
Argument myArg = Argument.Create(typeof(WaitForUserInputActvitiy), ArgumentDirection.In);
this.ModelItem.Properties["UserInteraction"].SetValue(source.Values.ToArray());
editingScope.Complete();
}
}
但是这会导致ArgumentException“UserInteractionProperty []类型的对象无法转换为InArgument`1 [UserInteractionProperty []]。
那么如何将我的UserInteractionProperties数组转换为InArgument?
答案 0 :(得分:1)
我在这里得到一个答案有点迟了,我怀疑你已经找到了你的错误,因为当你开始编写使用UserInteraction
的代码时,你将无法从中获取它们。
所以问题是this.ModelItem.Properties["UserInteraction"]
正在为InArgument<UserInteractionProperty[]>
属性建模,并且您尝试使用UserInteractionProperty[]
的值设置它。如果您希望其他工作流元素提供InArgument<UserInteractionProperty[]>
列表,则UserInteractionProperty
是要使用的类型。看起来情况并非如此 - 我怀疑你想要将你的财产声明为UserInteractionProperty[]
。
public class WaitForUserInputActvitiy : NativeActivity
{
public UserInteractionProperty[] UserInteraction { get; set; }
}
但是我建议将其声明为Collection<UserInteractionProperty>
,因为那样更好。