どのように私はWPFのRelayCommandを使用することができますか?

StackOverflow https://stackoverflow.com/questions/862570

  •  21-08-2019
  •  | 
  •  

質問

どのように私はWPFのRelayCommandを使用することができますか?

役に立ちましたか?

解決

リレーコマンドはWPFには存在しません、それは<のhref = "http://msdn.microsoft.com/en-us/magazine/dd419663で定義された後に有名に上げだけで外部のクラスです。 aspx#のid0090030" のrel = "noreferrer">このMSDNの記事に。あなたがそれを使用したい場合は、それを自分で書く必要があります。

それ以外のことができますあなたのWPFツールキットからの委任コマンドここ RelayCommandコードの上に余分な機能を少し持っていた。

<時間>

ああ、私はこの答えを入力している間に変更質問。あなたは、コマンドを実行することが有効な状態にあるかどうかを決定するブール値を返すものを使用すると、1人のまたは2代表団でそれを供給する必要がある上に定義したRelayCommandを使用して、何も返さないその二、実際に実行していると仮定すると、コマンド。あなたは「CanRun」デリゲートを指定しない場合、コマンドは、それが有効な状態に常にあることを考慮します。記事で使用するコード:

RelayCommand _saveCommand;
public ICommand SaveCommand
{
    get
    {
        if (_saveCommand == null)
        {
            _saveCommand = new RelayCommand(param => this.Save(),
                param => this.CanSave );
        }
        return _saveCommand;
    }
}

トリガされたときに保存()メソッドを呼び出し、有効性のためのテストとしてCANSAVEプロパティを返しますRelayCommandを宣言します。保存()メソッドは、ViewModelにに呼び出されます。このコマンドは、WPFでのボタンにバインドされている場合はボタンのIsEnabledプロパティは、ビューモデルのCANSAVEプロパティと一致し、ボタンがクリックされたときに(それが有効になっていると仮定します)。

他のヒント

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top