我想要理解ICommand接口。我建立了一个应用程序,其中有一个使用RelayCommand类的按钮,该类继承自ICommand。这个类看起来像这样:
class RelayCommand : ICommand
{
private Action<object> _action;
public RelayCommand(Action<object> action)
{
_action = action;
}
public bool CanExecute(object parameter)
{
return true;
}
public void Execute(object parameter)
{
if(parameter != null)
{
_action(parameter);
}
else
{
_action("Hello World");
}
}
//We need to include CanExecuteChange when using the Interface ICommand
//In this case it doesn't actually do anything.
public event EventHandler CanExecuteChanged;
}
每次我追踪这个函数时,都会进入CanExecute方法,但是在我的代码中没有地方调用这个方法。我像这样创建了一个RelayCommand实例:
Btn_AcceptedAnswer = new RelayCommand(new Action<object>(AcceptedAnswer_OnClick));
所以我的问题是,当RelayCommand被初始化时,它如何知道运行CanExecute()和Execute(),并且在什么时候运行这些函数?我知道如何实现一个事件,我只是想了解它的工作原理。