My app is written using the MVVM pattern in WPF, and all of my Buttons use Command bindings to execute code in my model. All commands have code in CanExecute to determine t
My problem seemed to be bound to the Command Binding - I used the RelayCommand
as I frequently do but the rendering of a button just wasn't correct until I clicked a window.
Removing the CanExecute
code from the CommandBinding
and using an IsEnabled
property instead resolved my problem without a head ache - it just took forever until I tried this among so many other things that could have been the problem.
WPF doesn't update command bound controls unless it has a reason to. Clicking on the GUI causes WPF to refresh so the update then works.
You can manually cause a refresh of any command bound controls by calling CommandManager.InvalidateRequerySuggested.
Sometimes, setting the focus on the parent control makes the CommandManager trigger CanExecute. Try the following after setting Running to false:
...
Running = false;
parentControl.Focusable = true;
parentControl.Focus();