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