40

どうすれば RelayCommandwpfで使用できますか?

4

2 に答える 2

53

リレーコマンドは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()メソッドが呼び出されます。

于 2009-05-14T10:20:26.397 に答える
7

すべてのメソッドのラッパーを作成する代わりにRelayCommand、バインディングを使用できる無料のライブラリとソースを提案できます{BindTo Save()}。バインディングを簡素化するために作成しました。また、相対バインディングがはるかに簡単になります。ここで見つけることができます:http://www.simplygoodcode.com/2012/08/simpler-wpf-binding.html

于 2012-08-06T18:00:08.317 に答える