在我的项目中,我想使用MVVM(和Commands)。我已经开始学习关于命令和ICommand实现的知识。
我想创建一个没有参数的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'未实现接口成员'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();
}
}
}
- 这是一个好的做法吗?
- 我应该使用其他方法吗?(如果是,我应该使用什么方法代替?)