Ho un UserControl WPF con molti altri controlli al suo interno. I TextBox sono tra questi. Ogni TextBox ha una sua validazione:Convalida WPF: azzeramento di tutti gli errori di convalida
<TextBox>
<TextBox.Text>
<Binding Path="MyPath" StringFormat="{}{0:N}" NotifyOnValidationError="True">
<Binding.ValidationRules>
<r:MyValidationRule ValidationType="decimal" />
</Binding.ValidationRules>
</Binding>
<TextBox.Text>
<TextBox>
un
Ora supponiamo che l'utente digita alcuni caratteri non validi in loro. Verranno tutti evidenziati in rosso.
Ora voglio ripristinare tutti gli errori di validazione (dal immissione errata) e impostare i valori corretti recenti provenienti da DataContext
.
ho impostato il DataContext nel costruttore e non voglio cambiarlo (DataContext = null non mi aiuterà poi):
DataContext = _myDataContext = new MyDataContext(..);
Quello che ho già trovato sono queste classi:
Validation.ClearInvalid(..)
BindingExpression.UpdateTarget();
credo che queste classi potevano aiutarmi, ma richiedono l'Binding
di una concreta FrameworkElement
e voglio farlo a livello globale per tutti loro.
Devo comunque ripetere l'albero visivo (che è davvero quello che non mi piace) o c'è una soluzione migliore per questo?
Quando si esegue il bind dei valori corretti, automaticamente verranno ripristinati gli errori di convalida.Stai usando l'interfaccia INotifyPropertyChanged sul tuo viewmodel e la proprietà genererà l'evento cambiato proprietà? – Ragunathan
Sì, lo sto usando .. questo è quello che ho provato all'inizio. Ma non vi è alcun cambiamento nel DataSource. Quindi WPF non rifletterà il vecchio valore –