When defining a RelayCommand in the ViewModel, this is normally done using once [lazy or in constructor] (see here for examples).
But is this safe ? What if multiple RelayCommands from the same instance are queued (multiple clicks from same button on the GUI), and for the first command the 'CanExecute' is changed to false, will the other queued commands also be cancelled ? I can imagine that this not the correct behavior ?