MobileGridImageColumn.cs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. using Syncfusion.SfDataGrid.XForms;
  2. using Xamarin.Forms;
  3. namespace InABox.Mobile
  4. {
  5. public enum MobileGridImageAspect
  6. {
  7. Fill,
  8. Fit
  9. }
  10. public class MobileGridImageColumn<TEntity> : MobileGridColumn<TEntity, ImageSource>
  11. {
  12. public MobileGridImageAspect Aspect { get; set; } = MobileGridImageAspect.Fit;
  13. public double Margin { get; set; }
  14. public ImageSource Header { get; set; }
  15. public MobileGridImageColumn() : base()
  16. {
  17. Width = 40;
  18. }
  19. protected override View HeaderContent()
  20. {
  21. if (Header != null)
  22. return new Image()
  23. {
  24. Source = Header,
  25. Margin = Margin
  26. };
  27. return base.HeaderContent();
  28. }
  29. public override GridColumn CreateColumn()
  30. {
  31. var result = CreateColumn<GridTemplateColumn>();
  32. result.CellTemplate = new DataTemplate(() =>
  33. {
  34. var image = new Image()
  35. {
  36. Aspect = Aspect == MobileGridImageAspect.Fill
  37. ? Xamarin.Forms.Aspect.AspectFill
  38. : Xamarin.Forms.Aspect.AspectFit,
  39. Margin = Margin,
  40. };
  41. image.SetBinding(Image.SourceProperty, ColumnName);
  42. return image;
  43. });
  44. return result;
  45. }
  46. }
  47. }