NumberRangeValidationRule.cs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Globalization;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using System.Windows;
  8. using System.Windows.Controls;
  9. using TeamAAS_VP;
  10. namespace FeTeamAAS_VPederUtility.ValidationRules
  11. {
  12. public class NumberRangeValidationRule : ValidationRule
  13. {
  14. // 定义 MaxValue 和 MinValue 作为普通属性
  15. public int MaxValue { get; set; } = int.MaxValue;
  16. public int MinValue { get; set; } = int.MinValue;
  17. public override ValidationResult Validate(object value, CultureInfo cultureInfo)
  18. {
  19. if (value == null || string.IsNullOrEmpty(value.ToString()))
  20. {
  21. return new ValidationResult(false, "Input cannot be empty.".Replace("\\n", Environment.NewLine).Replace("\\t", "\t"));
  22. }
  23. if (int.TryParse(value.ToString(), out int number))
  24. {
  25. if (number >= MinValue && number <= MaxValue)
  26. {
  27. return ValidationResult.ValidResult;
  28. }
  29. else
  30. {
  31. string msg = "Value must be between {MinValue} and {MaxValue}.".Replace("\\n", Environment.NewLine).Replace("\\t", "\t");
  32. return new ValidationResult(false, msg.Replace("{MinValue}", MinValue.ToString()).Replace("{MaxValue}", MaxValue.ToString()));
  33. }
  34. }
  35. else
  36. {
  37. return new ValidationResult(false, "Invalid number format.".Replace("\\n", Environment.NewLine).Replace("\\t", "\t"));
  38. }
  39. }
  40. }
  41. }