System.NotImplementedException错误WPF
问题描述:
IM与问题,即时通讯完成本教程,其中IM学习WPF此链接:https://www.tutorialspoint.com/mvvm/mvvm_view_viewmodel_communication.htm,但是当IM执行,他返回错误:问题出在哪里System.NotImplementedException错误WPF
"Error 1 'MVVMDemo.MyICommand' does not implement interface member '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();
}
error 'An exception of type 'System.NotImplementedException' occurred in MVVMDemo.exe but was not handled in user code'
答
显式添加公共到事件处理程序
public event EventHandler CanExecuteChanged = delegate { };
完整的解决方案张贴在Github上回购https://github.com/vjoks/WPF-MVVM/tree/master/MVVMHierarchiesDemo-pre-Validation