Как исправить ошибку компилятора-не удается преобразовать из группы методов в систему.Делегат?
public MainWindow()
{
CommandManager.AddExecutedHandler(this, ExecuteHandler);
}
void ExecuteHandler(object sender, ExecutedRoutedEventArgs e)
{
}
Ошибка 1 Аргумент 2: не удается преобразовать из "группы методов" в " систему.Делегат'
2 ответов
Я думаю, что есть несколько ExecuteHandler с разными сигнатурами. Просто приведите свой обработчик к версии, которую вы хотите иметь:
CommandManager.AddExecuteHandler(this, (Action<object,ExecutedRoutedEventArgs>)ExecuteHandler);
вы не можете передать "метод" непосредственно в качестве параметра, Вам нужно передать выражение. Вы можете либо обернуть метод в делегат:
CommandManager.AddExecutedHandler(this, new ExecutedRoutedEventHandler(ExecuteHandler));
CommandManager.AddExecutedHandler(this, (Action<object,ExecutedRoutedEventArgs>) ExecuteHandler);
или лямда - – что является моим личным фаворитом, так как вам не нужно запоминать имя делегата:
CommandManager.AddExecutedHandler(this, (s, e) => ExecuteHandler(s, e));