1

チェックボックスを含む一連のコントロールを含むコンテンツの WPF ボタンがあります。

現在、CheckBox をシングルクリックすると、「Checked」イベントが発生します。これで問題ありません。

私が気に入らないのは、ダブルクリックでも "Checked" イベントが発生することです。

現在、Double-Click は、CheckBox の「Checked」イベントと Button の「DoubleClicked」イベントの両方をトリガーします。

私が望むのは、CheckBox の Double-Click が、CheckBox のイベントではなく、Button のイベントのみをトリガーすることです。CheckBox は、シングルクリックでのみチェックする必要があります。

それを行う方法はありますか?

ありがとう。

4

1 に答える 1

1

ユーザーがチェックボックスをオンにしようとする試みを処理する前に、遅延を実装する必要があるため、最善のユーザー エクスペリエンスが得られない可能性があります。

なんで?

チェックボックスをダブルクリックしても、チェックボックスで何も起こらないで、ボタンに制御を渡したいだけです。それは完全に理解できます。

しかし、単にチェックボックスをクリックするとどうなるでしょうか? マウス ボタンを離した瞬間に、チェック マークが表示されます。ただし、システムは、ユーザーが再度クリックする予定がないことをまだ認識できません。そのため、実際にダブルクリックしていないことを確認するために、 DoubleClickTimeの間待機する必要があります。

チェックボックスをチェックするときの遅延と、チェックボックスをダブルクリックするときのちらつきのどちらが悪いかを比較検討する必要があります。

遅延を受け入れることにした場合は、自分で実装する必要があります。動作するはずの基本的な手順は次のとおりです。

  1. CheckBox.PreviewMouseDown のハンドラーを作成します。このハンドラー内で、CheckBox を無効にし、DispatcherTimerをDoubleClickTimeの間隔で開始します。
  2. 一方、フィールド を true に設定する Button.MouseDoubleClick のハンドラーを作成_hasDoubleClickedします。
  3. タイマーが鳴ったらチェックボックスを有効にし、_hasDoubleClickedfalse の場合はチェックボックスの を切り替えIsCheckedます。また、設定し_hasDoubleClick = falseます。

ご覧のとおり、これはきれいではありません。別の設計で目標を達成する別の方法があるかどうかを自問することをお勧めします。そもそもダブルクリックを使用する必要がありますか?

于 2013-08-10T01:47:13.743 に答える