CanExecute Logique pour DelegateCommand

Mise à jour: L'accent est devenu MVVM à la place de la question si je suis à jour.

Je vais avoir un problème avec CanExecute pour DelegateCommand. Elle n'est pas mise à jour avant que j'appelle RaiseCanExecuteChanged, est-ce le comportement souhaité?

CanExecute Logique pour DelegateCommand

J'ai téléchargé un simple exemple de projet de reproduire ce problème ici : http://dl.dropbox.com/u/39657172/DelegateCommandProblem.zip

Le problème est le suivant, j'ai deux Buttons comme ça. L'une est la Liaison Command à un RelayCommand la mise en œuvre et l'autre est contraignant pour le Prisme de la mise en œuvre de DelegateCommand

<Button Command="{Binding DelegateSaveCommand}"/>
<Button Command="{Binding RelaySaveCommand}"/>

Le ViewModel ICommands

DelegateSaveCommand = new DelegateCommand(Save, CanSaveDelegate);
RelaySaveCommand = new RelayCommand(param => Save(), param => CanSaveRelay);

et la CanExecute méthode/prédicat

public bool CanSaveDelegate()
{
    return HasChanges;
}
public bool CanSaveRelay
{
    get { return HasChanges; }
}

Les deux sont à l'aide de la propriété HasChanges. Lorsque HasChanges est mis à jour, seule la CanSaveRelay mises à jour. Est-ce la façon dont il est censé être?

+1 Parce que j'ai le même problème avec PRISM... j'ai effectivement utiliser MVVM Light RelayCommand au lieu de le PRISME de l' DelegateCommand. J'ai vu un article quelque part sur la recompilation du Prisme de la bibliothèque, pour ajouter l'événement CanExecuteChanged, mais je ne peux pas le trouver maintenant (Pense que c'était PRISME 2 de toute façon)
J'en ai pris 2 différentes suppositions quant à ce que le problème pourrait être, mais sans voir le code, il m'est impossible de savoir exactement quelle est la cause.
Vous pourriez faire la même chose que Meleak, donc ma solution de référence pour l'explication de la pourquoi et comment le résoudre.
Aussi, si le problème est que votre Modèle est en train de faire la modification de la propriété et la sensibilisation de la propertychanged des événements à l'époque qui est en train de changer la propriété de l'État?
Le PropertyChanged est soulevée par l'entité qui est généré à partir de la Base de données. Je suis en train de lire votre réponse maintenant

OriginalL'auteur Fredrik Hedblad | 2011-09-08