【发布时间】:2018-07-17 20:31:33
【问题描述】:
我试图理解 ICommand 接口。我用一个按钮构建了一个应用程序,该按钮使用了一个继承自 ICommand 的名为 RelayCommand 的类。这个类看起来像这样:
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(),以及何时运行这些?我知道如何实现一个事件,我只是想了解它是如何工作的。
【问题讨论】: