DynamicGridMemoColumn.cs 1.7 KB

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