DynamicColumnNameEditorControl.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. using InABox.Core;
  2. using InABox.WPF;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using System.Windows;
  9. using System.Windows.Controls;
  10. using System.Windows.Media;
  11. namespace InABox.DynamicGrid;
  12. public class DynamicColumnNameEditorControl : DynamicEditorControl<string, DynamicColumnNameEditor>
  13. {
  14. private TextBox TextBox = null!;
  15. private Button Edit = null!;
  16. string Value = "";
  17. string[] ColumnNames;
  18. public override void Configure()
  19. {
  20. ColumnNames = EditorDefinition.GetColumnNames();
  21. }
  22. protected override FrameworkElement CreateEditor()
  23. {
  24. var grid = new Grid
  25. {
  26. VerticalAlignment = VerticalAlignment.Stretch,
  27. HorizontalAlignment = HorizontalAlignment.Stretch
  28. };
  29. grid.AddColumn(GridUnitType.Star);
  30. grid.AddColumn(GridUnitType.Auto);
  31. TextBox = new TextBox
  32. {
  33. VerticalAlignment = VerticalAlignment.Stretch,
  34. VerticalContentAlignment = VerticalAlignment.Center,
  35. HorizontalAlignment = HorizontalAlignment.Stretch,
  36. Margin = new Thickness(0, 0, 0, 0),
  37. IsEnabled = false
  38. };
  39. Edit = new Button
  40. {
  41. VerticalAlignment = VerticalAlignment.Stretch,
  42. VerticalContentAlignment = VerticalAlignment.Center,
  43. HorizontalAlignment = HorizontalAlignment.Stretch,
  44. Margin = new Thickness(5, 1, 0, 1),
  45. Padding = new Thickness(5, 0, 5, 0),
  46. Width = 20,
  47. Content = "..",
  48. Focusable = false,
  49. };
  50. Edit.Click += EditButton_Click;
  51. grid.AddChild(TextBox, 0, 0);
  52. grid.AddChild(Edit, 0, 1);
  53. return grid;
  54. }
  55. private void EditButton_Click(object sender, RoutedEventArgs e)
  56. {
  57. if(DynamicGridColumnNameSelectorGrid.SelectColumnName(ColumnNames, out var value))
  58. {
  59. Value = value;
  60. TextBox.Text = Value;
  61. CheckChanged();
  62. }
  63. }
  64. public override int DesiredHeight()
  65. {
  66. return 25;
  67. }
  68. public override int DesiredWidth()
  69. {
  70. return int.MaxValue;
  71. }
  72. public override void SetColor(Color color)
  73. {
  74. TextBox.Background = color.ToBrush();
  75. }
  76. public override void SetFocus()
  77. {
  78. TextBox.Focus();
  79. }
  80. protected override string RetrieveValue()
  81. {
  82. return Value;
  83. }
  84. protected override void UpdateValue(string value)
  85. {
  86. Value = value;
  87. TextBox.Text = value;
  88. }
  89. }