Я знаю, что я уже задавал вопросы по этому вопросу, но что-то просто смущает. Я занимаюсь учебным пособием по шаблону MVVM WPF, но, похоже, я не могу понять это правильно, как в учебнике, в нем нет подробных сведений о том, как реализовать интерфейс 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, что объясняет это?
Спасибо!