Una delle novità più importanti presenti in Windows Presentation Foundation è costituita dalle funzionalità di Binding che, forti dell'esperienza proveniente da WinForms, si dimostrano ancora più potenti e flessibili.
Nelle applicazioni che fanno uso di dati l'uso del Binding è quindi obbligatorio e molto probabilmente si presenta anche la necessita di validare i dati immessi dall'utente.
A tale scopo l'oggetto Binding dispone di una proprietà ValidationRules, una collezione di classi astratte ValidationRule che hanno il compito di processare il valore immesso e indicare se è valido o meno. Sebbene è consigliabile implementare queste logiche a livello di entità, in modo indipendente dalla tecnologia di presentazione che si sta usando, i ValidationRule permettono sia un ulteriore filtro per vincolare il tipo del dato che la proprietà di destinazione può accettare, sia un modo per conoscere e mostrare gli errori riscontrati nell'entità. Per esempio l'interfaccia System.ComponentModel.IDataErrorInfo è nata per questo scopo e può essere usata per fornire informazioni di validazione.
L'esempio che segue mostra un'ipotetica classe di validazione di interi:
public class Int32ValidationRule : ValidationRule
{
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
// Controllo che il valore non sia nullo
if (value != null)
{
Int32 result;
// Se è già un numero o un numero valido
if (value is Int32 || Int32.TryParse(value.ToString(), out result))
return ValidationResult.ValidResult;
}
// In tutti gli altri casi il valore non è un numero
return new ValidationResult(false, "Valore non valido");
}
}L'implementazione è abbastanza semplice e consiste nell'implementare il metodo Validate e restituire un tipo ValidateResult che contiene l'esito e un oggetto d'errore che può essere poi usato per i messaggi di notifica.
Per utilizzare la classe occorre inserirla nella collezione ValidationRules dell'oggetto Binding. Il markup che segue mostra una TextBox e un TextBlock che indica il numero inserito. In caso di validazione fallita la TextBox automaticamente viene bordata di rosso:
<TextBox>
<TextBox.Text>
<Binding Path="Text" ElementName="number">
<Binding.ValidationRules>
<local:Int32ValidationRule />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
<!-- Label per mostrare il numero -->
<TextBlock Grid.Row="1">
<TextBlock>Numero: </TextBlock>
<TextBlock x:Name="number" />
</TextBlock>- Introduzione a LINQ, LINQ to XML, Object e DataSet
- #57 - Ottimizzare il trasferimento dei dati binari in WCF
- Rilasciato Team Foundation Server e le versioni Express di Visual Studio 2008
- Habemus CardSpace!
- #45 - Gestire il versioning in Windows Communication Foundation
- Windows Presentation Foundation 3.5: 3D interattivo e le altre novità del framework
- #47 - Template dinamici di WPF con DataTemplateSelector
- Skin personalizzate per il tuo controllo con Visual State Manager
- Annunciato Silverlight 2.0
- #34 - Verificare che tutti gli oggetti in una lista soddisfino una condizione con la clausola All di LINQ
- Eccovi LINQ to reflection
- ancora expression tree
Esprimi il tuo giudizio su questo script:
Per procedere devi essere autenticato.
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.





Stampa
Download 


10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!