in meinem WPF UI, verwende ich RoutedCommands, die ich über den folgenden Code in meiner XAML verweisen:WPF Benutzerdefinierte ICommand Implementierung und das CanExecuteChanged Ereignis
Command="viewModel:MessageListViewModel.DeleteMessagesCommand"
Ich mag nicht diese statische Link zu meinem Viewmodel-Klasse ich denke, dies ist eine Syntax wie die folgenden
Command="{Binding DeleteMessagesCommand}"
Nachdem man erstellt eine benutzerdefinierte ICommand Implementierung wie das Erstellen und verwenden Sie nicht so schön ist, merke ich, einen großen Nachteil von dem, was ich getan habe: RoutedCommands die Befehlsmanager nutzen und (in gewisser Weise ist das für mich völlig undurchsichtig) Feuer Das CommandManager.RequerySuggested-Ereignis, sodass die CanExecute-Methode automatisch erneut angefordert wird. Wie für meine benutzerdefinierte Implementierung wird CanExecute nur einmal beim Start und nie wieder danach ausgelöst.
Hat jemand eine elegante Lösung dafür?
Dank einem Haufen für diese große und prägnante Antwort! Klappt wunderbar. Wissen Sie, wann und warum RequerySuggested ausgelöst wird? –
Nicht genau, aber ich scheint ziemlich oft passieren ... –
OK, vielen Dank noch einmal! –