Привязка вывода конструктора пользовательских действий к аргументу действия

Я пытаюсь добавить настраиваемый конструктор действий для действия, которое у меня есть. Деятельность выглядит примерно так:

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?


person gbanfill    schedule 26.04.2010    source источник


Ответы (1)


Я немного опоздал с ответом здесь, и я подозреваю, что вы уже нашли свою ошибку, потому что, когда вы приступите к написанию кода, использующего UserInteraction, вам будет неоткуда их взять.

Итак, проблема в том, что this.ModelItem.Properties["UserInteraction"] моделирует свойство InArgument<UserInteractionProperty[]>, а вы пытаетесь установить для него значение, равное UserInteractionProperty[]. InArgument<UserInteractionProperty[]> — это тип, который следует использовать, если вы хотите, чтобы какой-либо другой элемент рабочего процесса предоставлял список UserInteractionProperty. Однако похоже, что это не так - я подозреваю, что вы хотели объявить свою собственность просто как UserInteractionProperty[].

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

Однако я бы посоветовал объявить его как Collection<UserInteractionProperty>, так как это лучше.

person Neil    schedule 30.01.2011