DFTimeControl.cs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using InABox.Core;
  2. using Syncfusion.Windows.Shared;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Globalization;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows;
  10. namespace InABox.DynamicGrid
  11. {
  12. public class DFTimeControl : DynamicFormFieldControl<DFLayoutTimeField, DFLayoutTimeFieldProperties, TimeSpan, TimeSpan?>
  13. {
  14. private DateTimeEdit Time = null!; // late-initialising
  15. protected override FrameworkElement Create()
  16. {
  17. Time = new DateTimeEdit();
  18. Time.DateTimeFormat = CultureInfo.CurrentCulture.DateTimeFormat;
  19. Time.Pattern = DateTimePattern.ShortTime;
  20. Time.DateTime = DateTime.MinValue.Add(Field.Properties.Default);
  21. Time.DateTimeChanged += (sender, e) => ChangeField();
  22. Time.EnableMouseWheelEdit = false;
  23. return Time;
  24. }
  25. public override TimeSpan? GetSerializedValue()
  26. {
  27. return Time.DateTime?.TimeOfDay;
  28. }
  29. public override void SetSerializedValue(TimeSpan? value)
  30. {
  31. Time.DateTime = value != null ? DateTime.MinValue.Add(value.Value) : null;
  32. }
  33. public override TimeSpan GetValue() => Time.DateTime?.TimeOfDay ?? TimeSpan.Zero;
  34. public override void SetValue(TimeSpan value) => Time.DateTime = DateTime.MinValue.Add(value);
  35. protected override bool IsEmpty() => Time.DateTime == null;
  36. }
  37. }