In meiner XAML habe ich dies:
<UserControl.CommandBindings>
<CommandBinding Command="Help"
CanExecute="HelpCanExecute"
Executed="HelpExecuted" />
</UserControl.CommandBindings>
<MenuItem Header="Help" Command="Help" />
Das funktioniert gut. Wenn ich also auf das Kontextmenü klicke, wird HelpExecuted() aufgerufen.
Jetzt möchte ich dasselbe noch einmal machen, nur dass ich einen benutzerdefinierten Befehl anstelle des Befehls Hilfe verwende. Was ich also tue, ist:
public RoutedCommand MyCustomCommand = new RoutedCommand();
und ändere meine XAML in:
<UserControl.CommandBindings>
<CommandBinding Command="MyCustomCommand"
CanExecute="HelpCanExecute"
Executed="HelpExecuted" />
</UserControl.CommandBindings>
<MenuItem Header="Help" Command="MyCustomCommand" />
Aber ich bekomme die Fehlermeldung: Der String 'MyCustomCommand' im Attribut 'Command' kann nicht in ein Objekt des Typs 'System.Windows.Input.ICommand' konvertiert werden. CommandConverter kann keine Konvertierung von System.String.
Was übersehe ich hier? Und bitte beachten Sie, dass ich alles in XAML tun möchte, d.h. nicht CommandBindings.Add(new CommandBinding(MyCustomCommand....) verwenden möchte.