DynamicGridDateColumn.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. using System;
  2. using System.Linq;
  3. using System.Windows;
  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. using Syncfusion.Windows.Controls.Grid;
  11. namespace InABox.DynamicGrid;
  12. public class DynamicGridDateColumn<TEntity> : DynamicGridMaskColumn<TEntity,DateEditor>
  13. where TEntity : BaseObject, new()
  14. {
  15. protected override Behavior CreateBehaviour() =>
  16. new TextBoxDateMaskBehavior(Definition.Format);
  17. protected override IValueConverter CreateConverter() =>
  18. new DateToStringConverter(Definition.Format);
  19. protected override void UpdateButtons(object? value, DynamicGridMaskColumnButton[]? buttons)
  20. {
  21. if (value is DateTime datetime && buttons?.Any() == true)
  22. {
  23. foreach (var button in buttons)
  24. button.Visibility = datetime.IsEmpty()
  25. ? Visibility.Collapsed
  26. : Visibility.Visible;
  27. }
  28. }
  29. private readonly BitmapImage _clear = Wpf.Resources.delete.AsBitmapImage(20,20);
  30. protected override DynamicGridMaskColumnButton[]? CreateButtons()
  31. {
  32. return new DynamicGridMaskColumnButton[]
  33. {
  34. new DynamicGridMaskColumnButton()
  35. {
  36. Image = _clear,
  37. Clicked = (sender,args) =>
  38. {
  39. args.Value = DateTime.MinValue;
  40. sender.Visibility = Visibility.Collapsed;
  41. }
  42. }
  43. };
  44. }
  45. public DynamicGridDateColumn(DynamicGridColumn definition) : base(definition)
  46. {
  47. }
  48. }