Hi Leute,
wenn ich meinen Code debugge bekomme ich immer folgende Fehlermeldung:
Fehlermeldung:
Fehler 1 'WpfApplication6.Commands.DelegateCommand.CanExecute(object)': Es wurde keine passende Methode zum Überschreiben gefunden. C:\Users\Martin\documents\visual studio 2013\Projects\WpfApplication6\WpfApplication6\Commands\DelegateCommand.cs 25 30 WpfApplication6
Fehler 2 'WpfApplication6.Commands.DelegateCommand.Execute(object)': Es wurde keine passende Methode zum Überschreiben gefunden. C:\Users\Martin\documents\visual studio 2013\Projects\WpfApplication6\WpfApplication6\Commands\DelegateCommand.cs 35 30 WpfApplication6
DelegateCommand:
public class DelegateCommand : ICommand
{
private readonly Predicate<object> _canExecute;
private readonly Action<object> _execute;
public event EventHandler CanExecuteChanged;
public DelegateCommand(Action<object> execute) : this (execute, null)
{ }
public DelegateCommand(Action<object> execute, Predicate<object> canExecute)
{
_execute = execute;
_canExecute = canExecute;
}
public override bool CanExecute(object parameter)
{
if (_canExecute == null)
{
return true;
}
return _canExecute(parameter);
}
public override void Execute(object parameter)
{
_execute(parameter);
}
public void RaiseCanExecuteChanged()
{
if (CanExecuteChanged != null)
{
CanExecuteChanged(this, EventArgs.Empty);
}
}
}
Im MainViewModel habe ich die Methoden, die ich an DelegateCommand übergebe.
MainViewModel:
public class MainViewModel : BaseViewModel
{
private MainView _mainView;
private ICommand _updateCommand2;
public MainViewModel()
{
_mainView = new MainView(this);
_mainView.Show();
}
public ICommand UpdateCommand2
{
get
{
if (_updateCommand2 == null)
{
_updateCommand2 = new DelegateCommand (UpdateCommand_Execute, UpdateCommand_CanExecute);
}
return _updateCommand2;
}
set
{
_updateCommand2 = value;
}
}
private void UpdateCommand_Execute(object parameter)
{
MessageBox.Show("Hello World");
}
private bool UpdateCommand_CanExecute(object parameter)
{
return true;
}
}
Warum findet er keine passende Methode?
Hallo...
Warum findet er keine passende Methode?
Weils eben keine gibt die überschrieben werden könnte.
Weißt du überhaupt was "override" in der DelegateCommand-Klasse macht bzw. machen soll?
lg
Mit override übersachreibst Du virtuelle oder abstrakte Methoden einer Basisklasse. Deine DelgateCommand Klasse implementiert aber lediglich ein Interface.
Lass das override mal weg und versuche es nochmal...
Siehe auch override und Schnittstellen (C#-Programmierhandbuch).
Bitte beachte [Hinweis] Wie poste ich richtig? , besonders Punkt 1.
Weeks of programming can save you hours of planning