CanExecute de depuração CommandBinding
-
05-07-2019 - |
Pergunta
Eu tenho um controle de usuário com um Button
ligado ao NavigationCommands.RefreshCommand
. O manipulador para o comando está no controle pai. Do condutor CanExecute
esta aparência:
e.CanExecute = !IsConnecting; // IsConnecting is a Dependency Property
Por alguma razão, o Button
permanecerá desativado até que eu clicar sobre a janela.
Se eu clicar no Button
e obtê-lo para executar (que causa IsConnecting
para ser temporariamente definido para true) ele irá desativar corretamente o botão, mas não permitirá que o botão até que eu causar outro evento na janela (por exemplo. um clique).
Existem quaisquer ferramentas ou truques que pode usar para tentar depurar o manipulador CanExecute de um comando que está ligada a um botão?
Solução
CanExecute do botão só é chamado quando algo acontece na GUI. Desde o IsConnecting muda em segundo plano, em seguida, WPF não atualizar o controle.
Para forçar WPF para atualizar a chamada CanExecute CommandManager.InvalidateRequerySuggested