我知道我已经在这方面提出过问题,但这只是令人困惑。 我正在做一个关于WPF MVVM模式的教程,但看起来我无法做到,因为在本教程中,它没有详细介绍如何实现ICommand接口。 (不知道如何正确还真是!?)WPF中的命令,执行问题
我有以下实现的ICommand:
class ViewCommand : ICommand
{
#region ICommand Members
private Predicate<object> _canExecute;
private Predicate<bool> _execute(object param);
public ViewCommand(Action<object> action)
{
}
public bool CanExecute(object parameter)
{
return _canExecute == null ? true : _canExecute(parameter);
}
public void Execute(object parameter)
{
_execute(parameter);
}
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
#endregion
}
,现在这种用法:
class StartViewModel : ViewModel
{
public ViewCommand startViewCommand;
public ViewCommand StartCommand
{
get
{
if (startViewCommand == null)
startViewCommand = new ViewCommand(
param => this.StartApplication()); // StartApplication returns void
return startViewCommand;
}
}
我想不出什么我的构造函数ViewCommand
类应该这样做?在StartViewModel
类中,它在构造函数中使用了一个lambda表达式,所以需要一些委托,但我不确定使用Execute和CanExecute的含义和方式。我把Action<object>
,但它可能是错误的...
最后,有人可以指向我的教程,如何实施ICommand解释它?
谢谢!