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