CanExecute et CanExecuteChanged, je dois mettre en œuvre ces avec un RelayCommand?

Je suis en utilisant MVVM-Lumière et j'ai mon relais de commande fonctionne parfaitement, je viens de lire que je devrait être mise en œuvre CanExecuteChanged et CanExecute. Bien que je suis incapable de trouver un bon exemple.

Quelqu'un aurait-il un bon exemple de la façon de les appliquer.

CanExecute doit retourner False quand il ne peut pas être exécuté, mais ne serait pas juste de disbale le bouton ??

Quand dois-je exécuter l' CanExecuteChanged?

N'importe qui ont des bons exemples d'utilisation de chacun, mon code fonctionne sans mais ce blog post indique que je doit être mise en œuvre de ces éléments.

Je suis un peu confus, comme je l'ai dit, je pensais que j'allais juste lier la Enabled propriété ou quelque chose à une propriété du ViewModel donc je peux désactiver le bouton ou une commande similaire?

Toute aide dans la compréhension serait vraiment reconnaissant.

MODIFIER

C'est ce que j'ai maintenant... Son travail, mais le bouton n'est pas physiquement HANDICAPÉS uniquement la commande ne s'exécute pas que je suis de retour faux. Je fais appel CanExecuteMe dans le constructeur de la force de la RaiseCanExecuteChanged ...

Cela va dans mon construtor de mon viewmodel

        this.Page2Command = new RelayCommand(() => this.GoToPage2(), () => CanExecuteMe);

        CanExecuteMe = false;

et voici le reste de mon code, je l'ai pris à partir d'un exemple.

    private bool _canIncrement = true;

    public bool CanExecuteMe
    {
        get
        {
            return _canIncrement;
        }

        set
        {
            if (_canIncrement == value)
            {
                return;
            }

            _canIncrement = value;

            //Update bindings, no broadcast
            //RaisePropertyChanged(CanIncrementPropertyName);

            Page2Command.RaiseCanExecuteChanged();
        }
    }

    public RelayCommand Page2Command
    {
        get;
        private set;
    }

    private object GoToPage2()
    {
        System.Windows.MessageBox.Show("Navigate to Page 2!");
        return null;
    }

Et voici mon XAML

  <Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="31,77,0,0" x:Name="button1" VerticalAlignment="Top" Width="75" >
            <i:Interaction.Triggers>
                <i:EventTrigger EventName="Click">
                    <GalaSoft_MvvmLight_Command:EventToCommand Command="{Binding Page2Command, Mode=OneWay}"/>
                </i:EventTrigger>
            </i:Interaction.Triggers>
        </Button>

OriginalL'auteur Martin | 2011-05-03