Использование ICommand в пользовательских операциях рабочего процесса Windows - PullRequest
0 голосов
/ 28 сентября 2018

Я довольно часто использовал команды ретрансляции в WPF проектах, но в настоящее время я работаю над рабочими процессами Windows и выполняю пользовательские действия с собственным дизайнером.Я хочу, чтобы кнопка на моем дизайне добавляла новые поля при нажатии.Я потратил дни на траление в интернете, но, кажется, рабочий процесс Windows победил меня.Это то, что у меня есть, и оно не работает, если кто-нибудь знает, почему, пожалуйста, помогите.

[Designer(typeof(MyCustomActivityDesigner))]
public sealed class MyCustomActivity : AsyncCodeActivity
{
    public MyCustomActivity()
    {
        AddSpecificParameter = new DelegateCommand(AddParameter);
    }
    public DelegateCommand AddSpecificParameter { get; set; }

    public void AddParameter()
    {
        //add value to an obervable collection
    }
}

Реализация команды реле:

public class DelegateCommand :ICommand
{
    //Parameterless constructor needed as windows workflow serialises it
    public DelegateCommand()
    { }

    private readonly Action _action;

    public DelegateCommand(Action action)
    {
        _action = action;
    }
    public void Execute(object parameter)
    {
        _action();
    }
    public bool CanExecute(object parameter)
    {
        return true;
    }

    public event EventHandler CanExecuteChanged;
}

И xaml - это просто кнопка с командойпривязка, но из-за странных вещей в рабочем процессе Windows она проходит через ModelItem (по крайней мере, для других привязок, которые у меня есть)

<Button Command="{Binding Path=ModelItem.AddSpecificParameter}"/>

Так что ключевым отличием от кода, который у меня есть в WPF работающих приложениях, является параметрбез конструктора, но это не должно повлиять на это? Протестировано это, конструктор без параметров прекрасно работает в приложениях WPF, так что это должно быть из-за невозможности обработки ModelItem команд

Также путь привязки ModelItem работает для всехдругие привязываемые свойства модели представления (например, строки на метках)

Примечание. Действия тестируются / отображаются в перепроектированном конструкторе.

...