using System; using System.ComponentModel; using System.Windows; using System.Windows.Controls; using System.Windows.Input; namespace CustomControls { [DesignTimeVisible(false)] public partial class TreeView : System.Windows.Controls.TreeView { public Visibility CheckBoxes { get; set; } public Visibility Images { get; set; } public bool HideSelection { get; set; } public event EventHandler CancelEdit; public event EventHandler AcceptEdit; private void TreeViewSelectedItemChanged(object sender, RoutedEventArgs e) { TreeViewItem item = sender as TreeViewItem; if (item != null) { item.BringIntoView(); e.Handled = true; } } private void OnAcceptEdit() => AcceptEdit?.Invoke(this, EventArgs.Empty); private void OnCancelEdit() => CancelEdit?.Invoke(this, EventArgs.Empty); private void PART_TextBox_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e) { var tb = sender as TextBox; if (tb.IsVisible) { tb.Focus(); tb.SelectAll(); } } private void PART_TextBox_LostFocus(object sender, RoutedEventArgs e) { OnCancelEdit(); } private void PART_TextBox_KeyDown(object sender, KeyEventArgs e) { if (e.Key == Key.Escape) { OnCancelEdit(); e.Handled = true; } else if (e.Key == Key.Enter) { OnAcceptEdit(); e.Handled = true; } } public TreeView() { InitializeComponent(); CheckBoxes = Visibility.Collapsed; Images = Visibility.Collapsed; } } }