Comment faire pour activer un Bouton avec sa méthode CanExecute

Je développe une application en WPF utilisant MVVM, mais je suis coincé avec les objets ICommand.

J'ai un windows qui contient des boutons, donc je ne les lient à leurs ICommand dans le code XAML comme ci-dessous:

<Button Command="{Binding DoSomethingCommand}" Content="Do Something" />

Alors, de mon point De vue-modèle de la classe, j'ai écrit ce qui suit:

public class MyViewModel : ObservableObject
{

    private bool isDoSomethingButtonEnabled = false;
    ....        
    public ICommand DoSomethingCommand
    {
        get;
        private set;
    }
    ....
    ....
    public MyViewModel()
    {
        DoSomethingCommand = new DelegateCommand<String>(this.OnDoSomething, this.CanDoSomething);
    }

    private void OnDoSomething(String arg)
    {

    }

    private bool CanDoSomething(String arg)
    {
        return isDoSomethingButtonEnabled;
    }
    ....
}

Donc, Car j'ai besoin que mon bouton n'est pas activé la première fois, la fenêtre s'ouvre, j'ai mis ma variable isDoSomethingButtonEnabled à false. Et cela fonctionne, le bouton est désactivé au début, mais mon problème est que lorsque je change la variable isDoSomethingButtonEnabled à true au moment de l'exécution de mon bouton est toujours désactivé.

J'ai même fait quelques tests après la modification de la variable isDoSomethingButtonEnabled à true, l'impression du résultat de DoSomethingCommand.CanExecute() et il montre "vrai"!

alors, que dois-je faire pour activer mon bouton??

Je vous remercie à l'avance

MVVM est un modèle, il ne nécessite pas de classes spécifiques comme DelegateCommand. Êtes-vous à l'aide de PRISM?
Oui, je le suis. En fait, j'ai à l'utiliser

OriginalL'auteur Dante | 2012-06-06