@Abt: Das paßt schon so bei Prism, s.
Commanding (es wird hier die nicht-generische Variante des
DelegateCommand benutzt - sonst würde es ja auch nicht kompilieren).
Man muß
RaiseCanExecuteChanged aufrufen, sobald sich der Wert (bzw. einer der Werte), die im
CanExecute abgefragt werden, ändern (d.h. man muss daraus Eigenschaften machen und im Setter dann
command.RaiseCanExecuteChanged() aufrufen), s.a.
WPF-Prism CanExecute method not being called.
Oder alternativ
ObservesProperty() verwenden...
PS: Ich persönlich mag die Umsetzung mittels des
CommandManager nicht (wie sie in dem MVVM-Artikel benutzt wird), da diese einige Nachteile hat, s. z.B.
Is the common implementation of RelayCommand violating the MVVM pattern?