DynamicGridEditorColumn.cs 1007 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. using InABox.Core;
  2. using Syncfusion.UI.Xaml.Grid;
  3. namespace InABox.DynamicGrid;
  4. public abstract class DynamicGridEditorColumn<TEntity, TEditor, TColumn> : IDynamicGridEditorColumn
  5. where TEditor : class
  6. where TColumn : GridColumn, new()
  7. {
  8. private TColumn _column => new ();
  9. public TColumn Column => _column;
  10. public string? MappingName => _definition?.ColumnName.Replace('.', '_');
  11. GridColumn IDynamicGridEditorColumn.Column => this.Column;
  12. private DynamicGridColumn? _definition;
  13. public DynamicGridColumn? Definition
  14. {
  15. get => _definition;
  16. set
  17. {
  18. _definition = value;
  19. UpdateBinding(_column);
  20. if (value?.Editor is TEditor editor)
  21. Configure(_column, editor);
  22. }
  23. }
  24. public virtual GridSummaryColumn? Summary() => null;
  25. protected virtual void UpdateBinding(TColumn column)
  26. {
  27. }
  28. protected abstract void Configure(TColumn column, TEditor editor);
  29. }