Depuración de CanExecute de CommandBinding
-
05-07-2019 - |
Pregunta
Tengo un control de usuario con un Button
vinculado a NavigationCommands.RefreshCommand
. El controlador para el comando está en el control principal. El CanExecute
del controlador se ve así:
e.CanExecute = !IsConnecting; // IsConnecting is a Dependency Property
Por alguna razón, el Button
permanecerá deshabilitado hasta que haga clic en la ventana.
Si hago clic en el Button
y lo ejecuto (lo que hace que IsConnecting
se configure temporalmente en verdadero), entonces deshabilitará el botón correctamente, pero no lo hará. habilitar el botón hasta que provoque otro evento en la ventana (por ejemplo, un clic).
¿Hay alguna herramienta o truco que pueda usar para intentar depurar el controlador CanExecute de un comando que está vinculado a un botón?
Solución
El botón CanExecute solo se llama cuando ocurre algo en la GUI. Dado que IsConnecting cambia en segundo plano, WPF no actualiza el control.
Para forzar a WPF a actualizar la llamada CanExecute CommandManager.InvalidateRequerySuggested