Как проверить этот класс?(WPF)

#wpf #validation #properties

#wpf #Проверка #свойства

Вопрос:

Как проверить этот класс?(WPF)

Я не могу понять, является ли значение свойства для каждого.

Для этого метода: public override ValidationResult validate(значение объекта.

максимальный символ имени должен быть 10; максимальное значение возраста должно быть 150;

 public class Person : ValidationRule
    {
        string _Name;

        public string Name
        {
            get
            {
                return _Name;
            }
            set
            {
                _Name = value;
            }
        }

        int _age = 20;

        public int Age
        {
            get { return _age; }
            set { _age = value; }
        }

        string _Phone = "000-0000";

        public string Phone
        {
            get { return _Phone; }
            set { _Phone = value; }
        }

        public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
        {
            **//is value Which Property?**
              //I can not understand is the Property Value for each
            return new ValidationResult(true, null);
        }
    }
  

Ответ №1:

Вы не можете сделать свой класс производным от ValidationRule : это person, а не правило.

Во-первых, я вообще не рекомендую разработчикам WPF использовать правила проверки. Используйте MVVM и реализуйте свою модель представления IDataErrorInfo , как описано (например) здесь .

Если вы хотите создать отдельный ValidationRule класс для проверки своего Person класса, вы можете, но вам нужно будет создать PropertyName свойство для класса и установить его в вашем XAML, например:

 <TextBox>
  <TextBox.Text>
    <Binding Path="Age"
             Mode="TwoWay">
      <Binding.ValidationRules>
        <local:PersonValidationRule PropertyName="Age"/>
      </Binding.ValidationRules>
    </Binding>
  </TextBox.Text>
</TextBox>
  

Затем Validate метод в этом классе может PropertyName соответствующим образом просматривать ветвь and . Конечно, теперь вы внедрили новую точку отказа — что произойдет, если вы введете неправильное имя свойства в свой XAML? Если вы используете проверку ошибок данных, этого не может произойти.