DFIntegerControl.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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, 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 int? GetSerializedValue()
  26. {
  27. var value = Integer.Value;
  28. if (value != null)
  29. return Convert.ToInt32((long)value);
  30. return null;
  31. }
  32. public override void SetSerializedValue(int? value)
  33. {
  34. Integer.Value = value;
  35. }
  36. public override int GetValue()
  37. {
  38. var value = Integer.Value;
  39. if (value != null)
  40. return Convert.ToInt32((long)value);
  41. return 0;
  42. }
  43. public override void SetValue(int value)
  44. {
  45. Integer.Value = value;
  46. }
  47. protected override bool IsEmpty() => Integer.Value == null;
  48. }
  49. }