DFIntegerFieldControl.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using Avalonia.Controls;
  2. using Avalonia.Input;
  3. using Avalonia.Interactivity;
  4. using Avalonia.Layout;
  5. using Avalonia.Media;
  6. using InABox.Avalonia.Components;
  7. using InABox.Core;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Globalization;
  11. using System.Linq;
  12. using System.Text;
  13. using System.Threading.Tasks;
  14. namespace PRS.Avalonia.DigitalForms;
  15. class DFIntegerFieldControl : DigitalFormFieldControl<DFLayoutIntegerField, DFLayoutIntegerFieldProperties, int, int?>
  16. {
  17. private IntegerBox Integer = null!; // late-initialising
  18. protected override Control Create()
  19. {
  20. Integer = new IntegerBox();
  21. Integer.Value = Field.Properties.Default;
  22. Integer.HorizontalContentAlignment = HorizontalAlignment.Center;
  23. Integer.VerticalContentAlignment = VerticalAlignment.Center;
  24. Integer.VerticalAlignment = VerticalAlignment.Stretch;
  25. Integer.ValueChanged += (sender, e) => ChangeField();
  26. return Integer;
  27. }
  28. public override int? GetSerializedValue()
  29. {
  30. var value = Integer.Value;
  31. if (value != null)
  32. return Convert.ToInt32(value);
  33. return null;
  34. }
  35. public override void SetSerializedValue(int? value)
  36. {
  37. Integer.Value = value;
  38. }
  39. public override int GetValue()
  40. {
  41. var value = Integer.Value;
  42. if (value != null)
  43. return Convert.ToInt32(value);
  44. return 0;
  45. }
  46. public override void SetValue(int value)
  47. {
  48. Integer.Value = value;
  49. }
  50. protected override bool IsEmpty() => Integer.Value == null;
  51. public override void SetBackground(IBrush brush, bool defaultColour)
  52. {
  53. Integer.Background = brush;
  54. }
  55. }