DynamicGridDateTimeColumn.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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 : DynamicGridMaskColumn<DateTimeEditor>
  14. {
  15. protected override Behavior CreateBehaviour() =>
  16. new TextBoxDateTimeMaskBehavior(Definition.Format);
  17. protected override IValueConverter CreateConverter() =>
  18. new DateTimeToStringConverter(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 DynamicGridDateTimeColumn(DynamicGridColumn definition) : base(definition)
  46. {
  47. }
  48. }