In Silverlight 3.0 l'engine di data binding è stato arricchito delle funzionalità di intercettazione degli errori di validazione, qualora un dato immesso dall'utente non rispetti precise regole definite nel codice.
Come introdotto nell'articolo https://www.silverlightitalia.com/articoli/silverlight/le-novita-silverlight-3.0-beta-1-p-5.aspx, questo è possibile valorizzando a true l'attributo ValidateOnExceptions e lanciando un'eccezione nel set della proprietà in binding con modalità TwoWay.
In alcuni scenari sollevare un'eccezione nel set di una proprietà potrebbe non essere applicabile: in Silverlight 4.0 è stato aggiunto l'attributo ValidatesOnDataErrors attraverso cui possiamo gestire i messaggi di validazione elaborati implementando l'interfaccia IDataErrorInfo nelle nostre entità.
Per implementare l'interfaccia occorre inserire la proprietà Error che può contenere i messaggi di errore di tutta l'entità, e un indicizzatore di default, con il quale possiamo intercettare la valorizzazione di ciascuna proprietà e restituire una semplice stringa come messaggio di errore qualora non siano rispettate le nostre regole di validazione.
#region IDataErrorInfo Members public string Error { get { return null; } } public string this[string columnName] { get { switch (columnName) { case "FirstName": if (string.IsNullOrEmpty(this.FirstName)) { return "* campo obbligatorio"; } break; } return null; } } #endregion
Come abbiamo detto, nel markup è sufficiente specificare l'attributo ValidatesOnDataErrors:
<TextBox Text="{Binding FirstName, Mode=TwoWay, ValidatesOnDataErrors=True, NotifyOnValidationError=True}" />
Nel nostro esempio, in caso di assenza di valore, avremo il seguente risultato:

Nella definizione dell'espressione di binding dell'esempio precedente è specificato anche l'attributo NotifyOnValidationError a true, se andiamo ad inserire il controllo ValidationSummary avremo automaticamente il riepilogo (dinamico) di tutti gli errori generati:

Nel codice allegato è possibile trovare la completa implementazione.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Uso dei design-time data nelle applicazioni della Universal Windows Platform
Sviluppare applicazioni con supporto al doppio schermo con Xamarin
Creare un effetto di ombra sui controlli della Universal Windows Platform
Modificare il layout della paginazione del controllo CarouselView in Xamarin Forms
Effettuare il multibinding in un'applicazione Xamarin Forms
UI testing in applicazioni .NET desktop e mobile
Dark mode e selezione dei temi in un'applicazione Xamarin Forms
Realizzare un effetto gradiente tramite composition API nella Universal Windows Platform
Modificare il behavior del controllo SwipeView in Xamarin Forms
Personalizzare gli elementi del controllo SwipeView in Xamarin Forms
Avviare una registrazione audio e video in una applicazione della Universal Windows Platform
Abilitare l'uso di C# 9 nelle applicazioni Xamarin.Forms
I più letti di oggi
- Specificare un constraint per TypeParam di un componente Blazor generico
- Creare un record in C#
- Learn&Get 'Applicazioni del mondo reale con ASP.NET 2.0' - Milano
- Codemotion 2012 - Roma
- Windows 10 Universal Platform Live - Online
- .NET Conference Italia - Milano
- Blazor Conference 2020 Live - Online
- Annunciata la modalità di uscita di ADO.NET Entity Framework e dei Data Services
- Disponibile la versione finale di Hyper-V: la virtualizzazione per Windows Server 2008