MobileGridTimeColumn.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. using System;
  2. using System.Globalization;
  3. using Syncfusion.SfDataGrid.XForms;
  4. using Xamarin.Forms;
  5. namespace comal.timesheets
  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.DisplayBinding = new Binding(
  39. this.ColumnName,
  40. BindingMode.Default,
  41. new MobileGridTimeConverter()
  42. {
  43. Format = this.Format,
  44. BlankIfZero = this.BlankIfZero
  45. });
  46. return result;
  47. }
  48. }
  49. }