DynamicGridTimeStampColumn.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Windows.Controls;
  5. using System.Windows.Data;
  6. using System.Windows.Media.Imaging;
  7. using InABox.Core;
  8. using InABox.WPF;
  9. using Microsoft.Xaml.Behaviors;
  10. namespace InABox.DynamicGrid;
  11. public class DynamicGridTimeStampColumn<TEntity> : DynamicGridMaskColumn<TEntity,TimestampEditor> where TEntity : BaseObject
  12. {
  13. protected override Behavior CreateBehaviour() =>
  14. new TextBoxDateTimeMaskBehavior(Definition?.Format, false);
  15. protected override IValueConverter CreateConverter() =>
  16. new DateTimeToStringConverter(Definition?.Format);
  17. protected override void UpdateButtons(object? value, DynamicGridMaskColumnButton[]? buttons)
  18. {
  19. if (value is DateTime datetime && buttons?.Any() == true)
  20. {
  21. foreach (var button in buttons)
  22. button.Image = datetime.IsEmpty()
  23. ? _set
  24. : _clear;
  25. }
  26. }
  27. private readonly BitmapImage _clear = Wpf.Resources.delete.AsBitmapImage(20,20);
  28. private readonly BitmapImage _set = Wpf.Resources.tick.AsBitmapImage(20,20);
  29. protected override DynamicGridMaskColumnButton[]? CreateButtons()
  30. {
  31. return new DynamicGridMaskColumnButton[]
  32. {
  33. new DynamicGridMaskColumnButton()
  34. {
  35. Image = _set,
  36. Clicked = (sender,args) =>
  37. {
  38. if (args.Value is DateTime datetime)
  39. {
  40. datetime = datetime.IsEmpty()
  41. ? DateTime.Now
  42. : DateTime.MinValue;
  43. args.Value = datetime;
  44. sender.Image = datetime.IsEmpty()
  45. ? _set
  46. : _clear;
  47. }
  48. }
  49. }
  50. };
  51. }
  52. public DynamicGridTimeStampColumn(DynamicGridColumn definition) : base(definition)
  53. {
  54. }
  55. }