DynamicGridTimeOfDayColumn.cs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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. namespace InABox.DynamicGrid;
  12. public class DynamicGridTimeOfDayColumn<TEntity> : DynamicGridMaskColumn<TEntity,TimeOfDayEditor> where TEntity : BaseObject, new()
  13. {
  14. protected override Behavior CreateBehaviour() =>
  15. new TextBoxTimeSpanMaskBehavior(Definition?.Format);
  16. protected override IValueConverter CreateConverter() =>
  17. new TimeSpanToStringConverter(Definition?.Format);
  18. protected override void UpdateButtons(object? value, DynamicGridMaskColumnButton[]? buttons)
  19. {
  20. if (value is TimeSpan timespan && buttons?.Any() == true)
  21. {
  22. foreach (var button in buttons)
  23. button.Visibility = timespan == TimeSpan.Zero
  24. ? Visibility.Collapsed
  25. : Visibility.Visible;
  26. }
  27. }
  28. private readonly BitmapImage _clear = Wpf.Resources.delete.AsBitmapImage(20,20);
  29. protected override DynamicGridMaskColumnButton[]? CreateButtons()
  30. {
  31. return new DynamicGridMaskColumnButton[]
  32. {
  33. new DynamicGridMaskColumnButton()
  34. {
  35. Image = _clear,
  36. Clicked = (sender,args) =>
  37. {
  38. args.Value = TimeSpan.Zero;
  39. sender.Visibility = Visibility.Collapsed;
  40. }
  41. }
  42. };
  43. }
  44. public DynamicGridTimeOfDayColumn(DynamicGridColumn definition) : base(definition)
  45. {
  46. }
  47. }