TreeView.xaml.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. using System;
  2. using System.ComponentModel;
  3. using System.Windows;
  4. using System.Windows.Controls;
  5. using System.Windows.Input;
  6. namespace CustomControls
  7. {
  8. [DesignTimeVisible(false)]
  9. public partial class TreeView : System.Windows.Controls.TreeView
  10. {
  11. public Visibility CheckBoxes { get; set; }
  12. public Visibility Images { get; set; }
  13. public bool HideSelection { get; set; }
  14. public event EventHandler CancelEdit;
  15. public event EventHandler AcceptEdit;
  16. private void TreeViewSelectedItemChanged(object sender, RoutedEventArgs e)
  17. {
  18. TreeViewItem item = sender as TreeViewItem;
  19. if (item != null)
  20. {
  21. item.BringIntoView();
  22. e.Handled = true;
  23. }
  24. }
  25. private void OnAcceptEdit() => AcceptEdit?.Invoke(this, EventArgs.Empty);
  26. private void OnCancelEdit() => CancelEdit?.Invoke(this, EventArgs.Empty);
  27. private void PART_TextBox_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
  28. {
  29. var tb = sender as TextBox;
  30. if (tb.IsVisible)
  31. {
  32. tb.Focus();
  33. tb.SelectAll();
  34. }
  35. }
  36. private void PART_TextBox_LostFocus(object sender, RoutedEventArgs e)
  37. {
  38. OnCancelEdit();
  39. }
  40. private void PART_TextBox_KeyDown(object sender, KeyEventArgs e)
  41. {
  42. if (e.Key == Key.Escape)
  43. {
  44. OnCancelEdit();
  45. e.Handled = true;
  46. }
  47. else if (e.Key == Key.Enter)
  48. {
  49. OnAcceptEdit();
  50. e.Handled = true;
  51. }
  52. }
  53. public TreeView()
  54. {
  55. InitializeComponent();
  56. CheckBoxes = Visibility.Collapsed;
  57. Images = Visibility.Collapsed;
  58. }
  59. }
  60. }