Debug di CanExecute di CommandBinding
-
05-07-2019 - |
Domanda
Ho un controllo utente con un Button
associato a NavigationCommands.RefreshCommand
. Il gestore per il comando è nel controllo parent. Il CanExecute
del gestore è simile al seguente:
e.CanExecute = !IsConnecting; // IsConnecting is a Dependency Property
Per qualche motivo, il Button
rimarrà disabilitato finché non faccio clic sulla finestra.
Se faccio clic sul pulsante
e lo eseguo (il che fa sì che IsConnecting
sia temporaneamente impostato su true) disabiliterà correttamente il pulsante, ma non lo farà abilitare il pulsante fino a quando non provoco un altro evento nella finestra (es. un clic).
Esistono strumenti o trucchi che posso usare per provare a eseguire il debug del gestore CanExecute di un comando associato a un pulsante?
Soluzione
Il pulsante CanExecute viene chiamato solo quando succede qualcosa nella GUI. Poiché IsConnecting cambia in background, WPF non aggiorna il controllo.
Per forzare WPF ad aggiornare la chiamata CanExecute CommandManager.InvalidateRequerySuggested