У меня есть WPF UserControl со многими другими элементами управления внутри него.
TextBoxes являются одними из них.
Каждый TextBox имеет свою собственную проверку:
<TextBox>
<TextBox.Text>
<Binding Path="MyPath" StringFormat="{}{0:N}" NotifyOnValidationError="True">
<Binding.ValidationRules>
<r:MyValidationRule ValidationType="decimal" />
</Binding.ValidationRules>
</Binding>
<TextBox.Text>
<TextBox>
а
Теперь предположим, что пользователь вводит в них несколько недопустимых символов. Все они будут выделены красным.
Теперь я хочу сбросить все ошибки проверки (из неверного ввода) и установить последние правильные значения , поступающие из DataContext
.
Я установил DataContext в конструкторе и не хочу его менять (DataContext = null мне тогда не поможет):
DataContext = _myDataContext = new MyDataContext(..);
Я уже нашел следующие классы:
Validation.ClearInvalid(..)
BindingExpression.UpdateTarget();
Я думаю, что эти классы могли бы помочь мне, но они требуют Binding
конкретного FrameworkElement
, и я хочу сделать это глобально для всех них.
Должен ли я так или иначе пройтись по Визуальному дереву (что на самом деле мне не нравится) или есть какое-то лучшее решение для этого?