Как исправить ошибку компилятора - невозможно преобразовать группу методов в System.Delegate? - PullRequest
12 голосов
/ 19 марта 2010
 public MainWindow()
 {
    CommandManager.AddExecutedHandler(this, ExecuteHandler);
 }

 void ExecuteHandler(object sender, ExecutedRoutedEventArgs e)
 {
 }

Ошибка 1 Аргумент 2: невозможно преобразовать из «группы методов» в «System.Delegate»

Ответы [ 2 ]

13 голосов
/ 19 марта 2010

Полагаю, существует несколько ExecuteHandler с разными сигнатурами. Просто приведите ваш обработчик к версии, которую вы хотите иметь:

CommandManager.AddExecuteHandler(this, (Action<object,ExecutedRoutedEventArgs>)ExecuteHandler);
1 голос
/ 19 марта 2010

Вы не можете передать «метод» непосредственно в качестве параметра, вам нужно передать выражение. Вы можете заключить метод в делегат:

CommandManager.AddExecutedHandler(this, new ExecutedRoutedEventHandler(ExecuteHandler));
CommandManager.AddExecutedHandler(this, (Action<object,ExecutedRoutedEventArgs>) ExecuteHandler);

или лямбда - это мой личный фаворит, так как вам не нужно запоминать имя делегата:

CommandManager.AddExecutedHandler(this, (s, e) => ExecuteHandler(s, e));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...