System.NotImplementedException Ошибка WPF

Я с проблемами, я следую этому руководству, где я узнаю о WPF по этой ссылке: https://www.tutorialspoint.com/mvvm/mvvm_view_viewmodel_communication.htm, но когда я выполню, он вернет ошибку:

"Ошибка 1" MVVMDemo.MyICommand "не реализует элемент интерфейса" System.Windows.Input.ICommand.CanExecuteChanged "C:\Users\Adriano\documents\visual studio 2013\Projects\MVVMDemo\MVVMDemo\MyICommand.cs 10 11 MVVMDemo"

Я не понимаю, в чем проблема...

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;

namespace MVVMDemo
{
    class MyICommand : ICommand
    {
        Action _TargetExecuteMethod; 
      Func<bool> _TargetCanExecuteMethod;

      public MyICommand(Action executeMethod) {
         _TargetExecuteMethod = executeMethod; 
      }

      public MyICommand(Action executeMethod, Func<bool> canExecuteMethod){ 
         _TargetExecuteMethod = executeMethod;
         _TargetCanExecuteMethod = canExecuteMethod; 
      }

      public void RaiseCanExecuteChanged() { 
         CanExecuteChanged(this, EventArgs.Empty); 
      }

      bool ICommand.CanExecute(object parameter) { 

         if (_TargetCanExecuteMethod != null) { 
            return _TargetCanExecuteMethod(); 
         } 

         if (_TargetExecuteMethod != null) { 
            return true; 
         } 

         return false; 
      }

      // Beware - should use weak references if command instance lifetime 
         //is longer than lifetime of UI objects that get hooked up to command 

      // Prism commands solve this in their implementation public event 
      EventHandler CanExecuteChanged = delegate { };

      void ICommand.Execute(object parameter) { 
         if (_TargetExecuteMethod != null) {
            _TargetExecuteMethod(); 
         } 
      } 
    }
}

Останавливается в

public MainWindow()
        {
            InitializeComponent();
        }

ошибка "Исключение типа" System.NotImplementedException "возникло в MVVMDemo.exe, но не было обработано в коде пользователя"

1 ответ

Явно добавить public в обработчик событий

public event EventHandler CanExecuteChanged = delegate { };

полное решение опубликовано в репозитории Github https://github.com/vjoks/WPF-MVVM/tree/master/MVVMHierarchiesDemo-pre-Validation

Другие вопросы по тегам