Ich habe ein Problem mit einem CanExecuteChanged-Ereignishandler.CanExecuteChanged funktioniert nicht richtig
Ich habe eine abstrakte Klasse, die ICommand implementiert:
public abstract class CommandBase<TViewModel> : ICommand
{
protected TViewModel ViewModel { get; set; }
public event EventHandler CanExecuteChanged;
protected CommandBase(TViewModel viewModel)
{
this.ViewModel = viewModel;
}
public virtual bool CanExecute(object parameter)
{
return true;
}
public abstract void Execute(object parameter);
}
dann habe ich einen Befehl, der von dieser Basis Befehl erbt:
public class AddNewFilmWindowCommand : CommandBase<ViewModelCollection<FilmModel>>
{
public event EventHandler CanExecuteChanged;
public AddNewFilmWindowCommand(ViewModelCollection<FilmModel> viewModelCollection)
: base(viewModelCollection)
{
}
public override void Execute(object item)
{
this.ViewModel.NewItem = new FilmModel();
var onCanExecuteChanged = this.CanExecuteChanged;
if (onCanExecuteChanged != null)
{
onCanExecuteChanged(this, new EventArgs());
}
}
public override bool CanExecute(object parameter)
{
if (this.ViewModel.NewItem == null)
{
return true;
}
else
{
return false;
}
}
}
aber die CanExecuteChanged mir gibt Warnung:
Warnung CS0108 'AddNewFilmWindowCommand.CanExecuteChanged' blendet das geerbte Element 'CommandBase> .CanExe aus cuteChanged '. Verwenden Sie das neue Schlüsselwort, wenn das Ausblenden beabsichtigt war. SpravaFilmu.ViewModels
und ist immer Null. Es wird nie ausgegraut, wenn ich mit diesem Befehl auf die Schaltfläche klicke.
Hi, danke, das hat das Problem gelöst :) Perfekt! Daran werde ich mich für das nächste Mal erinnern! – Shadowmak