diff --git a/SharpTreeView/SharpTreeNode.cs b/SharpTreeView/SharpTreeNode.cs index 28222a919..cbd746b35 100644 --- a/SharpTreeView/SharpTreeNode.cs +++ b/SharpTreeView/SharpTreeNode.cs @@ -609,5 +609,12 @@ namespace ICSharpCode.TreeView } #endregion + + /// + /// Gets called when the item is double-clicked. + /// + public virtual void ActivateItem(RoutedEventArgs e) + { + } } } diff --git a/SharpTreeView/SharpTreeViewItem.cs b/SharpTreeView/SharpTreeViewItem.cs index 4201f1393..d9c0d367b 100644 --- a/SharpTreeView/SharpTreeViewItem.cs +++ b/SharpTreeView/SharpTreeViewItem.cs @@ -65,6 +65,7 @@ namespace ICSharpCode.TreeView Point startPoint; bool wasSelected; + bool wasDoubleClick; protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e) { @@ -78,9 +79,7 @@ namespace ICSharpCode.TreeView CaptureMouse(); if (e.ClickCount == 2) { - if (!Node.IsRoot || ParentTreeView.ShowRootExpander) { - Node.IsExpanded = !Node.IsExpanded; - } + wasDoubleClick = true; } } } @@ -101,6 +100,16 @@ namespace ICSharpCode.TreeView protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e) { + if (wasDoubleClick) { + wasDoubleClick = false; + Node.ActivateItem(e); + if (!e.Handled) { + if (!Node.IsRoot || ParentTreeView.ShowRootExpander) { + Node.IsExpanded = !Node.IsExpanded; + } + } + } + ReleaseMouseCapture(); if (wasSelected) { base.OnMouseLeftButtonDown(e);