我在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绑定路径也适用于视图模型上的所有其他可绑定属性(例如标签上的字符串)
注意:这些活动已在重新托管的设计器中进行了测试/显示。