これについてはすでに質問したことは知っていますが、混乱を招くだけです。私はWPF MVVMパターンに関するチュートリアルを行っていますが、チュートリアルのように、ICommandインターフェイスの実装方法について詳しく説明していないため、正しく理解できないようです。(それが本当にどれほど正しいかわからない?!!)
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
、コンストラクターでラムダ式を使用しているため、デリゲートが必要ですが、何をどのように Execute および CanExecute と連携させるのかわかりません。を入れましたAction<object>
が、おそらく間違っています...
最後に、それを説明する ICommand の実装方法に関するチュートリアルを教えてもらえますか?
ありがとう!