DFDateControl.cs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  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. public class DFDateControl : DynamicFormFieldControl<DFLayoutDateField, DFLayoutDateFieldProperties, DateTime, DateTime?>
  12. {
  13. private DateTimeEdit Date = null!; // late-initialising
  14. protected override FrameworkElement Create()
  15. {
  16. Date = new DateTimeEdit();
  17. Date.DateTimeFormat = CultureInfo.CurrentCulture.DateTimeFormat;
  18. Date.Pattern = DateTimePattern.ShortDate;
  19. var def = Field.Properties.Default;
  20. Date.DateTime = def.IsEmpty()
  21. ? DateTime.Now
  22. : def;
  23. Date.DateTimeChanged += (sender, e) => ChangeField();
  24. Date.EnableMouseWheelEdit = false;
  25. return Date;
  26. }
  27. public override DateTime? GetSerializedValue() => Date.DateTime ?? DateTime.MinValue;
  28. public override void SetSerializedValue(DateTime? value) => Date.DateTime = value;
  29. public override DateTime GetValue() => Date.DateTime ?? DateTime.MinValue;
  30. public override void SetValue(DateTime value) => Date.DateTime = value;
  31. protected override bool IsEmpty() => Date.DateTime == null || Date.DateTime == DateTime.MinValue;
  32. }