Tag: relaycommand

ReExCommand 上的CanExecute无法正常工作

我正在使用MVVM Light V3 alpha 3编写一个WPF 4应用程序(使用VS2010 RC),并且在这里遇到了一些奇怪的行为…… 我有一个打开一个Window的命令,那个Window创建了ViewModel等等 – 没有什么奇怪的。 在那个Window我有一些RelayCommand ,例如: CategoryBeenSelected = new RelayCommand(() => OnCategoryUpdate = true); 没有什么奇怪的 – 它按照我的预期工作。 问题是我不能使用通用RelayCommand的CanExecute方法/ lambda表达式。 这有效: DeleteCategoryCommand = new RelayCommand(DeleteCategory); 但这不是: DeleteCategoryCommand = new RelayCommand(DeleteCategory, CanDeleteCategory); 窗口没有出现。 我的意思是,我单击打开窗口的按钮,应用程序刚刚被阻止,几秒钟后,Window的InitializeComponent方法抛出NullReferenceException (对象引用未设置为对象的实例) 简而言之,如果我在RelayCommand上放置一个CanExecute方法,那么拥有该ViewModel(带有RelayCommand )的Window无法实例化。 如果我删除了CanExecute , CanExecute显示Window 。 这里的问题在哪里? 我糊涂了。 谢谢。 编辑:根据要求,这是堆栈跟踪: PresentationFramework.dll中出现类型为“System.NullReferenceException”的第一次机会exception 在GalaSoft.MvvmLight.Command.RelayCommand`1.CanExecute(Object parameter) 在System.Windows.Controls.Primitives.ButtonBase.UpdateCanExecute() 在System.Windows.Controls.Primitives.ButtonBase.OnCommandChanged(DependencyObject d,DependencyPropertyChangedEventArgs […]