ModelRequestCommand = new DelegateCommand(PopulateModelRequest);
没有错误并且很好,但我想将参数 (int ProgramID) 传递到填充模型请求中。 ProgramID 由
定义this.ProgramId = ProgramID;
当我尝试时出现错误
ModelRequestCommand = new DelegateCommand(PopulateModelRequest(int ProgramID);
我该怎么做?
一个按钮绑定(bind)到 WPF 中的 ModelRequestCommand
最佳答案
看起来您试图在函数调用期间声明一个参数。然后您尝试将该调用的结果(应该是 void
)传递给期望 Action<object>
的构造函数或者可能是 Action
代表。你就是不能那样做。
同样,ICommand
接口(interface) Execute
方法(实际上是您正在实现的方法)如下所示:
void Execute(object parameter)
其中参数通过 CommandParameter
传递调用对象的属性(即 Button
)。 DelegateCommand
object 实现它并使用相同的参数调用传递给构造函数的委托(delegate)(该类的某些版本将允许您传递一个简单的 Action
并且 DelegateCommand
会为您忽略 parameter
)。
要修复它,要么通过 ProgramID
在 CommandParameter
并这样做:
private void PopulateModelRequest(object parameter)
{
int programId = (int)parameter;
}
或者类似的东西
new DelegateCommand(() => PopulateModelRequest(ProgramId));
private void PopulateModelRequest(int programId)
{
}
第二个是在 ProgramId 上创建一个闭包,因此如果您无论如何都可以在您的方法中访问该字段,只需使用它而不是将其传入。
关于c# - 使用带参数的函数委托(delegate)命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39024584/