質問

TreeViewベースのコントロールを開発していますが、ダブルクリックイベントが引き続きTreeViewItemノードをバブルします。

目標は、TreeViewItemをダブルクリックしたときに展開または折りたたむことです。

MouseDoubleClickイベントのイベントハンドラーを各TreeViewItemに適用するスタイルがあります。

イベントを処理するコードは次のとおりです ジェネラコディセタグプレ

これはトップレベルのTreeViewItemで正常に機能しますが、子をダブルクリックすると、イベントによってツリーがバブルアップし、ブランチ全体が崩壊します。なぜイベントはバブルを続けているのですか?前述のように、[1]は、イベントを処理済みとして設定しています。

役に立ちましたか?

解決

自分の質問に答えるのは嫌いですが、これが私が最終的に使用するようになった解決策です。

イベントが処理されているかどうかに関係なく、ブランチ内のTreeViewItemごとに(子からルートまで)MouseDoubleClickが発生することを指定したいくつかのソースに出くわした後、この質問の回答を利用しました:

WPF TreeView、PreviewMouseDownイベントでTreeViewItemを取得 >

マウスイベントの下にあったTreeViewItemを取得します。現在の送信者がマウスイベントのTreeViewItemと等しい場合、必要に応じて展開/折りたたみます。それ以外の場合は、イベントを無視して何もしません。

他のヒント

理由はわかりませんが、選択した回答がすべてのジェネラコダイスタグコードで機能するとは限りませんでした。そこで、単純なTreeViewItemsアプローチを使用して、boolを複数回再インターンしないようにしました。 ジェネラコディセタグプレ

呼び出された最初のハンドラーを完全に実行できるようにするには(したがって、子のハンドラーが親のハンドラーの前に呼び出されるという事実に依存します)、単に追加します: ジェネラコディセタグプレ

登録することを忘れないでください。 ジェネラコディセタグプレ

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