DynamicGridDateTimeColumn.cs 1.7 KB

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