Tengo un WPF UserControl con muchos otros controles dentro de él. Los cuadros de texto se encuentran entre estos. Cada cuadro de texto tiene su propia validación:Validación de WPF: Borrado de todos los errores de validación
<TextBox>
<TextBox.Text>
<Binding Path="MyPath" StringFormat="{}{0:N}" NotifyOnValidationError="True">
<Binding.ValidationRules>
<r:MyValidationRule ValidationType="decimal" />
</Binding.ValidationRules>
</Binding>
<TextBox.Text>
<TextBox>
un
Ahora supongamos que el usuario escribe algunos caracteres no válidos en ellos. Todos se resaltarán en rojo.
Ahora quiero restablecer todos los errores de validación (desde la entrada incorrecta) y establecidos los últimos valores correctos procedentes de DataContext
.
que establezca el DataContext en el constructor y no quiero cambiarlo (DataContext = null no me ayudará a continuación):
DataContext = _myDataContext = new MyDataContext(..);
Lo que ya he encontrado son estas clases:
Validation.ClearInvalid(..)
BindingExpression.UpdateTarget();
creo que estas clases me podían ayudar, pero requieren la Binding
de un hormigón FrameworkElement
y quiero hacerlo a nivel mundial para todos ellos.
Debo de alguna manera iterar a través del Visual Tree (que es realmente lo que no me gusta) o hay alguna mejor solución para esto?
Cuando enlaza los valores correctos, automáticamente restablecerá los errores de validación.¿Está utilizando la interfaz INotifyPropertyChanged para su viewmodel & Property levantará el evento de propiedad cambiada? – Ragunathan
Sí, lo estoy usando ... eso es lo que he intentado al principio. Pero no hay cambios en el DataSource. Por lo tanto, WPF no reflejará el antiguo valor –