在我的项目中,我想使用 MVVM (& Commands)。我已经开始学习 ICommand 的命令和实现。
我想创建ICommand
没有参数的实现。
(触发数据加载/数据刷新等 - 我不需要任何参数来执行此操作,因此尝试创建不带参数的命令似乎很自然)
这是我正在使用的代码:
using System.Windows.Input;
public class NoParameterCommand : ICommand
{
private Action executeDelegate = null;
private Func<bool> canExecuteDelegate = null;
public event EventHandler CanExecuteChanged = null;
public NoParameterCommand(Action execute)
{
executeDelegate = execute;
canExecuteDelegate = () => { return true; };
}
public NoParameterCommand(Action execute, Func<bool> canExecute)
{
executeDelegate = execute;
canExecuteDelegate = canExecute;
}
public bool CanExecute()
{
return canExecuteDelegate();
}
public void Execute()
{
if (executeDelegate != null)
{
executeDelegate();
}
}
}
但是我收到了关于没有以正确的方式实现 ICommand 接口的错误('XXX.YYYY.NoParameterCommand' does not implement interface member 'System.Windows.Input.ICommand.Execute(object)'
)
所以我想这样做:
CanExecute
(添加了和中缺少的参数Execute
)
public class NoParameterCommand : ICommand
{
...omitted - no changes here...
public bool CanExecute(object parameter) //here I added parameter
{
return canExecuteDelegate();
}
public void Execute(object parameter) //and here
{
if (executeDelegate != null)
{
executeDelegate();
}
}
}
- 这是一个好方法吗?
- 我应该使用其他方式吗?(如果是这样,我应该怎么做?)