Sono ancora in difficoltà con la convalida in WPF.Binding di convalida al primo caricamento
Ho una regola di convalida personalizzata che richiede che il testo venga visualizzato in una casella di testo, cioè applica un vincolo di campo obbligatorio.
<TextBox local:Masking.Mask="^[a-zA-Z0-9]*$" x:Name="CameraIdCodeTextBox" Grid.Row="1" Grid.Column="1">
<Binding Path="CameraIdCode" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" NotifyOnValidationError="True" ValidatesOnExceptions="True">
<Binding.ValidationRules>
<localValidation:RequiredFieldRule />
</Binding.ValidationRules>
</Binding>
</TextBox>
Il problema è che quando i primi carichi di finestra, non c'è nessun testo nel controllo TextBox (come ci si aspetterebbe). Ma la proprietà Text viene associata a una proprietà sul ViewModel e, come tale, la regola di convalida viene attivata, a indicare che c'è un problema con la finestra - prima che l'utente abbia persino avuto l'opportunità di violare una regola aziendale.
Si tratta di un problema risolto in precedenza? Non posso essere stato il primo a sperimentarlo. Sono sicuro che è una trappola per i giovani giocatori.
Puoi provare ... UpdateSourceTrigger = "LostFocus" –
Si può essere in grado di creare un gruppo di convalida, e solo gli consentono, ove utente effettua prima una modifica a qualche campo. –
@AngelWPF L'ho provato. Si convalida ancora sul bind iniziale quando viene caricata la finestra. – onefootswill