2010-04-26 8 views
1

J'essaie d'ajouter un concepteur d'activités personnalisé pour une activité que j'ai. L'activité ressemble un peu:Liaison du concepteur d'activité personnalisée à l'argument d'activité

public class WaitForUserInputActvitiy : NativeActivity 
{ 
    public InArgument<UserInteractionProperty[]> UserInteraction { get; set; } 
} 

Je suis en train de mettre un concepteur sur l'activité pour le rendre un peu plus agréable de définir ces valeurs (pour ne pas finir par taper VB directement mon concepteur est. basé sur la grille de la propriété de Mindscape. J'ai une source ObservableDictionary que je veux obtenir les valeurs de et les mettre dans la InArgument. Actuellement, je suis en utilisant

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(); 
    } 
} 

Cependant il en résulte une ArgumentException « objet de type UserInteractionProperty [ ] ne peut pas être converti en InArgument`1 [UserInteractionProperty []].

Alors, comment puis-je convertir mon tableau de UserInteractionProperties dans un InArgument?

Répondre

1

Je suis un peu en retard avec une réponse ici, et je soupçonne que vous avez déjà trouvé votre bogue, parce que lorsque vous écrivez le code qui utilise le UserInteraction vous n'auriez pas où les trouver.

Donc le problème est que this.ModelItem.Properties["UserInteraction"] est la modélisation de la propriété InArgument<UserInteractionProperty[]> et vous essayez de le définir avec une valeur qui est UserInteractionProperty[]. InArgument<UserInteractionProperty[]> est le type à utiliser si vous souhaitez qu'un autre élément de workflow fournisse la liste des UserInteractionProperty s. Il semble que ce n'est pas le cas cependant - je soupçonne que vous vouliez déclarer votre propriété comme UserInteractionProperty[].

public class WaitForUserInputActvitiy : NativeActivity 
{ 
    public UserInteractionProperty[] UserInteraction { get; set; } 
} 

Cependant, je vous conseille de le déclarer comme Collection<UserInteractionProperty> puisque c'est plus agréable.