同じウィンドウ内のデータグリッドを更新するトップレベルのメニュー項目があります。私の現在の制御の流れは次のとおりです。クリックイベントハンドラでリフレッシュ WPF toplevel MenuItemタスクに基づいて有効/無効を切り替えます
- ユーザーをクリックすると、I:
- は
oMenuItem.IsEnabled = false
を設定することで、メニュー項目を無効にします。 - は、グリッドをリフレッシュするための行動を派遣し、その行動に、私はメニューアイテムを再度有効にするには、問題は、それが無効になっていても、ユーザーが更新する]をクリックできることです
IsEnabled = true
- は
を設定することによって、それがようですクリックがキューに入れられた場合アクションが戻ると、残りの「キューアップ」されたクリックを処理します。私が期待しているのは、menuitemが無効になっている間のすべてのクリックは無視され、有効になっている場合のみクリックが確認されます。
奇妙なことは、私はちょうどすなわち、それを無効にし、決してそれがそのようにとどまることを可能にするならば、それは
こんにちは。応答していただきありがとうございます。私はCommandメソッドも使いましたが、CanExecuteハンドラでは、MenuItemのIsEnabledプロパティがfalseであるかどうかをチェックしました。本質的に、e.CanExecute = oMenuItem.IsEnabled。これは以前の非IAsyncResultアプローチと同じ動作でした。私はあなたのアプローチに一発を与え、うまくいけばこれを理解していきます。 – Anuj
コマンドを使うことは、それらをViewModelの中に置くことができ、したがってロジックからのプレゼンテーションを分離できることです。私が何を話しているのかわからない場合は、Google MVVM (簡単に言うと、すべてのコントロールでウィンドウを表示することなく、ロジックを簡単なクラスとしてテストすることができます)。 MVVMを使用する場合は、IAsyncResultフィールドをViewModelに保存し、ビューには保存しないでください。 – Alex