2010-03-19 2 views

Antwort

10

Ich denke, es sind mehrere ExecuteHandler mit unterschiedlichen Signaturen. Nur werfen Sie Ihre Handler auf die Version, die Sie haben wollen:

CommandManager.AddExecuteHandler(this, (Action<object,ExecutedRoutedEventArgs>)ExecuteHandler); 
+1

Verstanden - new der Delegattyp: CommandManager.AddExecutedHandler (dies, neue ExecutedRoutedEventHandler (ExecuteHandler)); Eigentlich war das sogar nicht nötig, mein Originalcode scheint jetzt zu funktionieren. Ich hatte eigentlich nicht zwei Methodendefinitionen. Ich denke, das war vielleicht nur ein Fehler in VS, wo die Fehlermeldung von einigen temporären Objektdateien verursacht wurde. Seltsamkeit. –

1

Sie können keine „Methode“ direkt als Parameter übergeben, müssen Sie einen Ausdruck zu übergeben. Sie können entweder das Verfahren in einen Delegaten wickeln:

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

oder in eine Lambda - das ist mein persönlicher Favorit, da Sie einen Delegaten Namen nicht merken müssen:

CommandManager.AddExecutedHandler(this, (s, e) => ExecuteHandler(s, e)); 
Verwandte Themen