MobileGridTimeColumn.cs 1.7 KB

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