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.