相关疑难解决方法(0)

ReExCommand <T>上的CanExecute无法正常工作

我正在使用MVVM Light V3 alpha 3编写一个WPF 4应用程序(使用VS2010 RC),并且在这里遇到了一些奇怪的行为......

我有一个打开a的命令,Window那个Window创建了ViewModel等等 - 那里没什么奇怪的.

在那Window我有一些RelayCommands,例如:

CategoryBeenSelected = new RelayCommand(() => OnCategoryUpdate = true);
Run Code Online (Sandbox Code Playgroud)

没有什么奇怪的 - 它按照我的预期工作.

问题是我不能使用通用RelayCommand的CanExecute方法/ lambda表达式.

这有效:

DeleteCategoryCommand = new RelayCommand<int>(DeleteCategory);
Run Code Online (Sandbox Code Playgroud)

但这不是:

DeleteCategoryCommand = new RelayCommand<int>(DeleteCategory, CanDeleteCategory);
Run Code Online (Sandbox Code Playgroud)

窗口没有出现.我的意思是,我单击打开窗口的按钮,应用程序刚刚被阻止,几秒钟后,Window的InitializeComponent方法抛出一个NullReferenceException(对象引用未设置为对象的实例)

简而言之,如果我将一个CanExecute方法放在a上RelayCommand<T>,Window那么拥有 ViewModel(带有)的那个RelayCommand<T>就无法实例化.如果我删除了CanExecute,Window显示出来.

这里的问题在哪里?我糊涂了.

谢谢.

编辑:根据要求,这是堆栈跟踪:

A first chance exception of type 'System.NullReferenceException' occurred in PresentationFramework.dll
   at GalaSoft.MvvmLight.Command.RelayCommand`1.CanExecute(Object parameter)
   at System.Windows.Controls.Primitives.ButtonBase.UpdateCanExecute()
   at …

c# wpf mvvm relaycommand

11
推荐指数
1
解决办法
1万
查看次数

标签 统计

c# ×1

mvvm ×1

relaycommand ×1

wpf ×1