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?

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top