Prima di dire sono all'inizio di WPF e MVVM Pattern.Come utilizzare il metodo CanExecute da ICommand su WPF
Durante il tentativo di alcuni comandi personalizzati mi chiedevo come utilizzare il metodo CanExecute dall'interfaccia ICommand.
Nel mio esempio ho un SaveCommand che ho solo quello che deve essere abilitato quando l'oggetto è salvabile. Il codice XAML del mio Savebutton assomiglia a questo:
<Button Content="Save" Command="{Binding SaveCommand, Mode=TwoWay}" />
Questo è il codice della mia classe salvare:
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();
}
}
La proprietà salvare nel ViewModel assomiglia a questo:
public ICommand SaveCommand
{
get
{
saveCommand = new Save(this);
return saveCommand;
}
set
{
saveCommand = value;
}
}
Questo costrutto non ha funzionato. Il pulsante non abilita se stesso quando isSaveable è true.