在Windows Workflow自定义活动中使用ICommand

时间:2018-09-28 11:46:00

标签: c# xaml workflow-foundation-4 workflow-foundation

我在WPF项目中已经使用了很多中继命令,但是我目前正在Windows Workflows上工作,并且正在使用其自己的设计器进行自定义活动。我希望设计上的按钮可以在按下时添加新字段。我花了几天时间浏览互联网,但似乎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绑定路径也适用于视图模型上的所有其他可绑定属性(例如标签上的字符串)

注意:这些活动已在重新托管的设计器中进行了测试/显示。

0 个答案:

没有答案