質問

コマンドが実行された後、クリックイベントを発生させようとして問題が発生しました。私はMVVMスタイルの開発を追いかけています。

シナリオは次のとおりです。

私のアプリケーションには、2 x Nボタンのグリッドがあります。Nは、動的にロードされるボタンのセットです(2 x 2になることもありますが、5 x 9になることもあります)。最初は、最初の列を除き、ボタンのすべての列が非表示になります。最初の列をクリックすると、コマンドが実行され、最初の列でクリックされたボタンに応じて、フェードインアニメーションが再生され、2番目の列の特定のボタンが表示されます。たとえば、最初の列の一番上のボタンをクリックすると、2番目の列の最初の4つのボタンが表示され、最初の列の一番下のボタンをクリックすると、2番目の列の最初の3つのボタンが表示されます。

問題は次のとおりです。

各ボタンについて、最初の列の各ボタンにCommandParameterを設定します。コマンドが実行されると、データが処理され、どのボタンが押されたかを示すプロパティがVMに設定されます(CommandParameterを再度使用するだけです)。データの処理中に、次のボタンセットをユーザーに表示したいと思います。 VMからCommandParameterを取得し、適切なボタンを表示するアニメーションを再生するクリックイベントがあります。

ただし、問題は、コマンドが実行される前にWPFが最初にClickイベントを実行することを好むことです。どのボタンがクリックされたかを示すVMのプロパティが設定されないため、これは問題です!

そのため、いくつか質問があります...

1)イベントを起動する前にコマンドを実行する方法はありますか?

2)私は正しいことをしていますか? :P

役に立ちましたか?

解決

クリックイベントハンドラを使用する代わりに、ボタンにDataTriggersをセットアップするだけで済みます。

ViewModelのプロパティに応答し、表示したくないボタンを非表示にし、実行したボタンを表示できます。

これの良い点は、ViewをXAMLで完全に実行でき、ViewModelが状態を設定しているだけで(つまり、この状態になっている)、バインディングが原因でViewが自動的に更新されることです。起動する新しいDataTrigger。

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