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