DFIntegerControl.cs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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. {
  11. public class DFIntegerControl : DynamicFormFieldControl<DFLayoutIntegerField, DFLayoutIntegerFieldProperties, int>
  12. {
  13. private IntegerTextBox Integer = null!; // late-initialising
  14. protected override FrameworkElement Create()
  15. {
  16. Integer = new IntegerTextBox();
  17. Integer.Value = Field.Properties.Default;
  18. Integer.HorizontalContentAlignment = HorizontalAlignment.Center;
  19. Integer.VerticalContentAlignment = VerticalAlignment.Center;
  20. Integer.IsScrollingOnCircle = false;
  21. Integer.VerticalAlignment = VerticalAlignment.Stretch;
  22. Integer.ValueChanged += (sender, e) => ChangeField();
  23. return Integer;
  24. }
  25. public override void Deserialize(string serialized)
  26. {
  27. if (int.TryParse(serialized, out int i))
  28. SetValue(i);
  29. }
  30. public override string Serialize()
  31. {
  32. return GetValue().ToString();
  33. }
  34. public override int GetValue()
  35. {
  36. var value = Integer.Value;
  37. if (value != null)
  38. return Convert.ToInt32((long)value);
  39. return 0;
  40. }
  41. public override void SetValue(int value)
  42. {
  43. Integer.Value = value;
  44. }
  45. protected override bool IsEmpty() => Integer.Value == null;
  46. }
  47. }