DynamicGridMemoColumn.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. using System.Collections.Generic;
  2. using System.Windows;
  3. using System.Windows.Data;
  4. using InABox.Core;
  5. using InABox.Wpf;
  6. using Syncfusion.UI.Xaml.Grid;
  7. using Syncfusion.UI.Xaml.TreeGrid;
  8. namespace InABox.DynamicGrid;
  9. public class DynamicGridMemoColumn : DynamicGridEditorColumn<MemoEditor, GridTextColumn, TreeGridTextColumn>
  10. {
  11. private void UpdateBinding(GridColumnBase column, string mapping)
  12. {
  13. var binding = new Binding
  14. {
  15. Path = new PropertyPath(mapping),
  16. Converter = new FuncConverter<object?, string>(
  17. x => x is string[] strArr ? string.Join('\n', strArr) : (x?.ToString() ?? ""),
  18. x => x)
  19. };
  20. column.DisplayBinding = binding;
  21. column.ValueBinding = binding;
  22. column.Padding = new Thickness(2);
  23. }
  24. protected override void UpdateBinding(GridTextColumn column)
  25. {
  26. base.UpdateBinding(column);
  27. UpdateBinding(column, MappingName);
  28. }
  29. protected override void UpdateBinding(TreeGridTextColumn column)
  30. {
  31. base.UpdateBinding(column);
  32. UpdateBinding(column, TreeMappingName);
  33. }
  34. protected override void Configure(GridTextColumn column, MemoEditor editor)
  35. {
  36. column.TextWrapping = TextWrapping.Wrap;
  37. column.UpdateTrigger = UpdateSourceTrigger.PropertyChanged;
  38. }
  39. protected override void Configure(TreeGridTextColumn column, MemoEditor editor)
  40. {
  41. column.TextWrapping = TextWrapping.Wrap;
  42. column.UpdateTrigger = UpdateSourceTrigger.PropertyChanged;
  43. }
  44. public override bool VariableHeight => true;
  45. public DynamicGridMemoColumn(DynamicGridColumn definition) : base(definition)
  46. {
  47. }
  48. }