Как проверить этот класс? (WPF) - PullRequest
0 голосов
/ 05 октября 2011

Как проверить этот класс? (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 Ответ

1 голос
/ 05 октября 2011

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

Во-первых, я не рекомендую, чтобы разработчики 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 и ветвь соответственно. Конечно, теперь вы реализовали новую точку отказа - что произойдет, если вы укажете неправильное имя свойства в своем XAML? Если вы используете проверку ошибок данных, это не может произойти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...