DynamicGridMemoColumn.cs 1.7 KB

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