In the demo, I have a button to toggle a bool field isAsking. I create a command which can execute only when isAsking==true.
Once I press T
I try to search for "the CommandManager detects conditions" and reach this exellent article.
By examining .NET Framework source code, the author finds that the CommandManager doesn't detect conditions by itself, rather than when Keyboard.KeyUpEvent, Mouse.MouseUpEvent, Keyboard.GotKeyboardFocusEvent, or Keyboard.LostKeyboardFocusEvent occurs, it will reevaluate CanExecute method.
The article includes other information, but the above part has been enough for me.