Po pierwsze, mówię, że jestem na samym początku WPF i wzorca MVVM.Jak korzystać z metody CanExecute z ICommand na WPF
Podczas testowania niestandardowych poleceń zastanawiałem się, jak korzystać z metody CanExecute Methode z interfejsu ICommand.
W moim przykładzie mam SaveCommand, które tylko mogę włączyć, gdy obiekt można zapisać. XAML kod mojego Savebutton wygląda następująco:
<Button Content="Save" Command="{Binding SaveCommand, Mode=TwoWay}" />
Jest to kod mojego ratowania klasy:
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();
}
}
Obiekt zapisać w ViewModel wygląda następująco:
public ICommand SaveCommand
{
get
{
saveCommand = new Save(this);
return saveCommand;
}
set
{
saveCommand = value;
}
}
Ta konstrukcja nie działa. Przycisk nie włącza się, gdy właściwość isSaveable jest prawdziwa.