I持って、私は次の標準的な構文を使用して、私のXAMLファイルから実行していますコマンド:私はからの2つの情報を必要とすることを実現するまで結合WPFを使用して、2つのコマンドパラメータを渡す
<Button Content="Zoom" Command="{Binding MyViewModel.ZoomCommand}"/>
これはうまく働いたがこの操作をユーザーの期待通りに行うためのビュー(キャンバスの幅と高さは具体的には)。
それは私のコマンドの引数として配列を渡すことも可能ですが、私はCommandParameterに私の2つのキャンバスのプロパティへの結合を指定するための方法であることが表示されていないように思え:
<Button Content="Zoom"
Command="{Binding MyViewModel.ZoomCommand"
CommandParameter={Binding ElementName=MyCanvas, Path=Width}"/>
私のコマンドに幅と高さの両方を渡すにはどうしたらいいですか? XAMLのコマンドを使用してこれを行うことは可能ではないようで、この情報をズームメソッドに渡すには、コードビハインドでクリックハンドラを呼び出す必要があります。
は感謝ケント - それは私が探していたまさにでした。あなたの最初のアプローチがより好きで、VMがパラメータを渡す必要がなくてもバインディングを通してビューの「状態」を知ることができますが、まだテストすることができます。できるだけ大きなキャンバスを作成し、この値をVMに渡すためのビューが必要なので、ここで私がここでうまくいくかどうかはわかりません。私はそれをバインドする場合、VMの幅を設定する必要はありませんか?この場合、VMはビューにバインドされていますか? – JasonD
@Jason:どちらにしてもかまいません。つまり、ビュー・プッシュをビュー・モデルに戻して変更したり、ビュー・モデルに変更をビューにプッシュしたりさせます。 TwoWayバインディングはいずれかのオプションを利用できるようになります。 –
私のプログラムでは、OnExecuteメソッドのパラメータはnull値を持つ配列ですが、コンバータの値は予期した通りです –