ユーザーがチェックボックスをオンにしようとする試みを処理する前に、遅延を実装する必要があるため、最善のユーザー エクスペリエンスが得られない可能性があります。
なんで?
チェックボックスをダブルクリックしても、チェックボックスで何も起こらないで、ボタンに制御を渡したいだけです。それは完全に理解できます。
しかし、単にチェックボックスをクリックするとどうなるでしょうか? マウス ボタンを離した瞬間に、チェック マークが表示されます。ただし、システムは、ユーザーが再度クリックする予定がないことをまだ認識できません。そのため、実際にダブルクリックしていないことを確認するために、 DoubleClickTimeの間待機する必要があります。
チェックボックスをチェックするときの遅延と、チェックボックスをダブルクリックするときのちらつきのどちらが悪いかを比較検討する必要があります。
遅延を受け入れることにした場合は、自分で実装する必要があります。動作するはずの基本的な手順は次のとおりです。
- CheckBox.PreviewMouseDown のハンドラーを作成します。このハンドラー内で、CheckBox を無効にし、DispatcherTimerをDoubleClickTimeの間隔で開始します。
- 一方、フィールド を true に設定する Button.MouseDoubleClick のハンドラーを作成
_hasDoubleClicked
します。
- タイマーが鳴ったらチェックボックスを有効にし、
_hasDoubleClicked
false の場合はチェックボックスの を切り替えIsChecked
ます。また、設定し_hasDoubleClick = false
ます。
ご覧のとおり、これはきれいではありません。別の設計で目標を達成する別の方法があるかどうかを自問することをお勧めします。そもそもダブルクリックを使用する必要がありますか?