2012-07-12 7 views
7

の文脈でMicrosoftのMVVMパターンとそのコマンド/イベント処理の側面を考えてみましょう。私は、コマンドをコントロールにバインドして(たとえばボタン)、コントロールのClickイベントに登録しています。CommandまたはEventHandlerは何が最初に来るのですか?

コマンドに関連付けられたコードまたは対応するイベントハンドラに関連付けられたコードの処理は、どのようなアクションが最初に行われるかという一般的なルールはありますか?

+0

私は最大の疑問を抱いていますコマンドを使用する上で重要なことは、通常これをViewModelのICommandにバインドすることです。これにより、VMはButtonについて何も知る必要はありません。これは、いくつかのコードとVMを混在させた場合ですか? VMを使用している場合は、どのようにボタンイベントにバインドしていますか? – stevethethread

+1

@ SteveSolomon私は、実行時のコントロールの動的作成に対処しようとしています。 MVVMパターンを尊重するために、私はVIEWに必要なコードをすべて残そうとします。ですから、私は現在、VIEW/VIEWMODELと 'Inter-VIEW'操作のためのEventHandler間の接続にコマンドバインディングを使用しています。 –

+0

私はそれが具体的だとは思わない。私は最初にイベントを購読する最初のものを手放すと思う。コマンドがXAMLに接続されている場合は、最初にサブスクライブすることをお勧めします。しかし、猫の皮膚には複数の方法があります。 –

答えて

5

イベントハンドラは、バインドされたICommandの前にトリガされます。

+2

これは正しいです。私はいくつかのビュー固有のチェックをコマンドの処理に先立って実行する前に、両方の場合にしばしば両方を実行しました。チェックに失敗した場合、イベントはコマンドを取り消すことができます。 – Rachel

+0

ありがとうございました。 –