ベースのコントロールを開発していTreeView
ますが、ダブルクリックイベントがノードをバブルし続けていますTreeViewItem
。
目標は、TreeViewItem
ダブルクリックしたときに展開または折りたたむことです。
イベントのイベントハンドラーをMouseDoubleClick
それぞれに適用するスタイルがありますTreeViewItem
。
イベントを処理するコードは次のとおりです
private void TreeViewItemDoubleClicked( object sender, RoutedEventArgs e )
{
// Get the specific tree view item that was double clicked
TreeViewItem treeViewItem = sender as TreeViewItem;
// not null?
if( null != treeViewItem )
{
// Switch expanded state
if( true == treeViewItem.IsExpanded )
{
treeViewItem.IsExpanded = false;
}
else
{
treeViewItem.IsExpanded = true;
}
// Set event handled
e.Handled = true; // [1]
}
}
これはトップレベルでは問題なく機能TreeViewItem
しますが、子をダブルクリックすると、イベントによってツリーがバブルアップし、ブランチ全体が崩壊します。なぜイベントはバブルを続けているのですか?前述のように、[1]
私はイベントを処理済みとして設定しています。