どうすれば RelayCommand
wpfで使用できますか?
2 に答える
リレーコマンドはWPFには存在しません。これは、このMSDNの記事で定義された後に目立つようになった外部クラスです。使いたいなら自分で書く必要があります。
それ以外の場合は、WPFツールキットからDelegateコマンドを実行できます。このツールキットには、RelayCommandコードに少し追加の機能があります。
ああ、私がこの答えを入力している間に質問が変わりました。上記で定義したRelayCommandを使用していると仮定すると、1つまたは2つのデリゲートを指定する必要があります。1つはコマンドを実行する有効な状態にあるかどうかを判断するboolを返し、もう1つは何も返さずに実際に実行するboolを返します。指図。「CanRun」デリゲートを指定しない場合、コマンドは常に有効な状態であると見なします。記事で使用されているコード:
RelayCommand _saveCommand;
public ICommand SaveCommand
{
get
{
if (_saveCommand == null)
{
_saveCommand = new RelayCommand(param => this.Save(),
param => this.CanSave );
}
return _saveCommand;
}
}
トリガーされたときにSave()メソッドを呼び出し、有効性のテストとしてCanSaveプロパティを返すRelayCommandを宣言します。このコマンドがWPFのボタンにバインドされている場合、ButtonのIsEnabledプロパティはViewModelのCanSaveプロパティと一致し、ボタンがクリックされると(有効になっている場合)、ViewModelでSave()メソッドが呼び出されます。
すべてのメソッドのラッパーを作成する代わりにRelayCommand
、バインディングを使用できる無料のライブラリとソースを提案できます{BindTo Save()}
。バインディングを簡素化するために作成しました。また、相対バインディングがはるかに簡単になります。ここで見つけることができます:http://www.simplygoodcode.com/2012/08/simpler-wpf-binding.html