DFIntegerControl.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. using InABox.Core;
  2. using Syncfusion.Windows.Shared;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using System.Windows;
  9. namespace InABox.DynamicGrid;
  10. public class DFIntegerControl : DynamicFormFieldControl<DFLayoutIntegerField, DFLayoutIntegerFieldProperties, int, int?>
  11. {
  12. private IntegerTextBox Integer = null!; // late-initialising
  13. protected override FrameworkElement Create()
  14. {
  15. Integer = new IntegerTextBox();
  16. Integer.Value = Field.Properties.Default;
  17. Integer.HorizontalContentAlignment = HorizontalAlignment.Center;
  18. Integer.VerticalContentAlignment = VerticalAlignment.Center;
  19. Integer.IsScrollingOnCircle = false;
  20. Integer.VerticalAlignment = VerticalAlignment.Stretch;
  21. Integer.ValueChanged += (sender, e) => ChangeField();
  22. return Integer;
  23. }
  24. public override int? GetSerializedValue()
  25. {
  26. var value = Integer.Value;
  27. if (value != null)
  28. return Convert.ToInt32((long)value);
  29. return null;
  30. }
  31. public override void SetSerializedValue(int? value)
  32. {
  33. Integer.Value = value;
  34. }
  35. public override int GetValue()
  36. {
  37. var value = Integer.Value;
  38. if (value != null)
  39. return Convert.ToInt32((long)value);
  40. return 0;
  41. }
  42. public override void SetValue(int value)
  43. {
  44. Integer.Value = value;
  45. }
  46. protected override bool IsEmpty() => Integer.Value == null;
  47. }