私のプロジェクトでは、MVVM (& コマンド) を使用したいと思います。コマンドと ICommand の実装について学び始めました。
パラメータなしの実装を作成したいと思いICommand
ます。
(データのロード/データのフラッシュなどをトリガーするには-パラメーターは必要ないので、パラメーターなしでコマンドを作成しようとするのは自然なようです)
これは私が使用しているコードです:
using System.Windows.Input;
public class NoParameterCommand : ICommand
{
private Action executeDelegate = null;
private Func<bool> canExecuteDelegate = null;
public event EventHandler CanExecuteChanged = null;
public NoParameterCommand(Action execute)
{
executeDelegate = execute;
canExecuteDelegate = () => { return true; };
}
public NoParameterCommand(Action execute, Func<bool> canExecute)
{
executeDelegate = execute;
canExecuteDelegate = canExecute;
}
public bool CanExecute()
{
return canExecuteDelegate();
}
public void Execute()
{
if (executeDelegate != null)
{
executeDelegate();
}
}
}
しかし、ICommand インターフェイスを正しい方法で実装していないというエラーが発生しました ( 'XXX.YYYY.NoParameterCommand' does not implement interface member 'System.Windows.Input.ICommand.Execute(object)'
)
そこで、代わりに次のようにすることを考えました。
CanExecute
(およびに欠落していたパラメータを追加Execute
)
public class NoParameterCommand : ICommand
{
...omitted - no changes here...
public bool CanExecute(object parameter) //here I added parameter
{
return canExecuteDelegate();
}
public void Execute(object parameter) //and here
{
if (executeDelegate != null)
{
executeDelegate();
}
}
}
- これは良い方法ですか?
- 別の方法を使用する必要がありますか? (そうであれば、代わりに何をすべきですか?)