Como usar o método CanExecute do ICommand no WPF

Primeiro a dizer que estou no início do WPF e do MVVM Pattern.

Ao tentar alguns comandos personalizados, eu queria saber como usar o CanExecute Methode na interface ICommand.

No meu exemplo, eu tenho um SaveCommand que eu apenas habilito quando o objeto é salvável. O código XAML do meu botão Salvar fica assim:

<Button Content="Save" Command="{Binding SaveCommand, Mode=TwoWay}" />

Este é o código da minha classe de salvamento:

class Save : ICommand
{
    public MainWindowViewModel viewModel { get; set; }

    public Save(MainWindowViewModel viewModel)
    {
        this.viewModel = viewModel;
    }

    public bool CanExecute(object parameter)
    {

        if (viewModel.IsSaveable == false)
            return false;
        return true;
    }

    public event EventHandler CanExecuteChanged;

    public void Execute(object parameter)
    {
        viewModel.Save();
    }
}

A propriedade save no ViewModel é assim:

    public ICommand SaveCommand
    {
        get
        {
            saveCommand = new Save(this);
            return saveCommand;
        }
        set
        {
            saveCommand = value;
        }
    }

Essa construção não funcionou. O botão não se habilita quando isSaveable é verdadeiro.

questionAnswers(1)

yourAnswerToTheQuestion