启动具有访问者的事件

sir*_*cco 5 c# events accessor

如何启动具有以下访问器的事件:

public event EventHandler CanExecuteChanged
    {
      add
      {
        CommandManager.RequerySuggested += value;
      }
      remove
      {
        CommandManager.RequerySuggested -= value;
      }
    }
Run Code Online (Sandbox Code Playgroud)

如果这是正常事件,我会通过以下方式启动它:

CanExecuteChanged(sender, EventArgs..). 
Run Code Online (Sandbox Code Playgroud)

但在这里它不起作用 - 我只能这样做

CanExecuteChanged +=..
Run Code Online (Sandbox Code Playgroud)

附加方法做事件 - 但我无法启动它.

此外,一些关于这个主题的文件将不胜感激.谢谢.

编辑 该事件来自在WPF中实现ICommand的类.没有什么可以显示:).并且没有 - CommandManager.RequerySuggested(this,EventArgs.Empty); 不起作用.

EDIT2不知道该说些什么 - 即使正确调用add方法,Jon的例子也应该有效 - 当我尝试调用事件时 - 它是null:|.我可能会删除带有访问器的事件.

Jon*_*eet 3

该事件只是订阅和取消订阅另一个事件。如果您希望调用您的订阅者(并且调用您的订阅者 - 而不是与其他事件分开的订阅者),则需要单独保留您的订阅者。例如,您可以将代码更改为:

private EventHandler canExecuteChanged;

public event EventHandler CanExecuteChanged
{
    add
    {
        CommandManager.RequerySuggested += value;
        canExecuteChanged += value;
    }
    remove
    {
        CommandManager.RequerySuggested -= value;
        canExecuteChanged -= value;
    }
}
Run Code Online (Sandbox Code Playgroud)