1

ボタンをダブルクリックするのに使用する何人かのユーザーに問題があるのを見てきました。

多くのアクションを起動するコマンドにバインドされたボタンがいくつかあります。

たとえば、メディエーターを介してそれらの間で通信する 2 つのウィンドウがあるため、「他のウィンドウを閉じる」をクリックすると、バインドされたコマンドが「CloseTheOtherWindowMessage」を送信します。問題は、ユーザーがダブルクリックすると、もう一度ウィンドウを閉じようとし、予想どおりクラッシュすることです。

ボタンを押したときに BusyIndi​​cator ウィンドウを IsBusy に設定しようとしましたが、指は MVVM よりも速く、BusyIndi​​cator が表示される前にダブルクリックできました。

MVVMでinteraction.Behaviorsを使用してダブルクリックのみを許可する方法の多くの例を見つけましたが、反対のことが必要です。この問題の例や他の良い一般的な解決策はありますか?

4

1 に答える 1

1
  1. クラッシュすると「期待どおり」になるのはなぜですか? クラッシュが「予想どおり」であってはなりません。

  2. あなたの指は「MVVMより速い」べきではありません。Dispatcher スレッドは、常に決定論的かつ順次に動作します。マルチスレッドのアプローチを使用していますか?

  3. コマンドのExecuteメソッドまたはハンドラーでそのCanExecuteChangedイベントを発生させると、バインディング エンジンはすぐに を呼び出しますCanExecute(...)。このメソッドがfalse2 回目に戻るようにします。タイマーを使用することもできますが、ビュー モデルの状態だけで、アクションが現在不可能であることを論理的に判断することもできます (つまり、IsOtherStuffAvailableが現在 であるためfalse)。

于 2012-10-22T09:36:28.180 に答える