2 Stimmen

Befehle in WPF, Frage zur Implementierung

Ich weiß, dass ich bereits Fragen zu diesem Thema gestellt habe, aber etwas ist einfach verwirrend. Ich mache ein Tutorial über WPF MVVM-Muster, aber es scheint, dass ich es nicht richtig, wie im Tutorial, es nicht ins Detail gehen, wie die ICommand-Schnittstelle zu implementieren. (nicht sicher, wie richtig es wirklich ist?!!)

Ich habe die folgende Implementierung von ICommand:

class ViewCommand : ICommand
    {
        #region ICommand Members

        private Predicate<object> _canExecute;
        private Predicate<bool> _execute(object param);

        public ViewCommand(Action<object> action)
        {

        }

        public bool CanExecute(object parameter)
        {
            return _canExecute == null ? true : _canExecute(parameter);
        }

        public void Execute(object parameter)
        {
            _execute(parameter);
        }

        public event EventHandler CanExecuteChanged 
        {
            add { CommandManager.RequerySuggested += value; }
            remove { CommandManager.RequerySuggested -= value; }
        }

        #endregion
    }

und jetzt diese Verwendung:

class StartViewModel : ViewModel
    {
        public ViewCommand startViewCommand;

        public ViewCommand StartCommand
        {
            get
            {
                if (startViewCommand == null)
                    startViewCommand = new ViewCommand(
                        param => this.StartApplication()); // StartApplication returns void
                return startViewCommand;
            }
        }

Ich kann nicht herausfinden, was mein Konstruktor der ViewCommand Klasse zu tun hat? In der StartViewModel Klasse wird ein Lambda-Ausdruck im Konstruktor verwendet, also muss es einen Delegaten geben, aber ich bin nicht sicher, was und wie es mit Execute und CanExecute funktionieren soll. Ich habe eine Action<object> aber das ist wahrscheinlich falsch...

Schließlich kann jemand mich auf ein Tutorial verweisen, wie ICommand zu implementieren, die es erklärt?

Merci !

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X