MobileGridDateColumn.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using System;
  2. using System.Globalization;
  3. using InABox.Core;
  4. using Syncfusion.SfDataGrid.XForms;
  5. using Xamarin.Forms;
  6. namespace InABox.Mobile
  7. {
  8. internal class MobileGridDateConverter : IValueConverter
  9. {
  10. public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
  11. {
  12. if (value is DateTime date)
  13. return date.IsEmpty() && BlankIfZero
  14. ? ""
  15. : date.ToString(Format);
  16. return "";
  17. }
  18. public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
  19. {
  20. return value;
  21. }
  22. public String Format { get; set; }
  23. public bool BlankIfZero { get; set; }
  24. }
  25. public class MobileGridDateColumn<TEntity> : MobileGridColumn<TEntity, DateTime>
  26. {
  27. public String Format { get; set; }
  28. public bool BlankIfZero { get; set; }
  29. public MobileGridDateColumn() : base()
  30. {
  31. Width = GridLength.Auto;
  32. Format = @"dd MMM yy";
  33. Alignment = TextAlignment.Center;
  34. BlankIfZero = true;
  35. }
  36. public override GridColumn CreateColumn()
  37. {
  38. var result = CreateColumn<GridTextColumn>();
  39. result.Format = Format;
  40. result.DisplayBinding = new Binding(
  41. this.ColumnName,
  42. BindingMode.Default,
  43. new MobileGridDateConverter()
  44. {
  45. Format = this.Format,
  46. BlankIfZero = this.BlankIfZero
  47. });
  48. return result;
  49. }
  50. }
  51. }