ベースのコントロールを開発してい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]私はイベントを処理済みとして設定しています。