#37 - Gestione dei dati in Data Binding in Silverlight 2.0: Converters
di Alessio Leoncini, in Silverlight 2.0, 19 febbraio 2009
Archiviato in:
.NET Framework 3.0, ASP.NET, Databinding, Silverlight, Silverlight 2.0, Windows Presentation Foundation, XAML
Le funzionalità di Data Binding consentono una buona separazione tra le sorgenti dati e la loro visualizzazione nelle interfacce utente, definendo direttamente nel markup il nome dei campi degli oggetti associati a ciascun controllo.
Text="{Binding Path=Title}"Qualora ci sia l'esigenza di manipolare i dati in Binding, come ad esempio per una renderizzazione diversa, è possibile realizzare classi Converter personalizzate in modo da modificare il valore da associare al controllo lasciando inalterato il dato originale.
Tali classi devono implementare l'interfaccia IValueConverter:
public class TitleConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { throw new NotImplementedException(); } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { throw new NotImplementedException(); } }
<UserControl x:Class="ASPItalia.ImageGallery.MediaItem" xmlns:MediaItem="clr-namespace:ASPItalia.ImageGallery" Cursor="Hand"> <UserControl.Resources> <MediaItem:TitleConverter x:Key="TitleConverter"></MediaItem:TitleConverter> </UserControl.Resources>
Text="{Binding Path=Title, Converter={StaticResource TitleConverter}}"Text="{Binding Path=Title, Converter={StaticResource TitleConverter}, ConverterParameter=20}"public class TitleConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
int _lenght = 0;
string _strLenght = parameter as string;
if (_strLenght != null)
int.TryParse(_strLenght, out _lenght);
string _value = value as string;
if (_value != null && _lenght > 0 && _value.Length >= _lenght)
{
_value = _value.Substring(0, _lenght);
_value = String.Format("{0}..", _value);
}
return _value;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
//implementazione specifica per il binding two-way
throw new NotImplementedException();
}
}Con questa semplice classe TitleConverter, il ConverterParameter definisce quando il testo "Title" debba essere esteso e troncato posponendo due puntini "..". La possibilità di definire il valore direttamente nel markup aggiunge velocità allo sviluppo ed alla manutenzione del progetto.
Approfondimenti
-
.NET Framework 4.0 beta 1: Windows Communication Foundation
-
Real Code Day 4.0: costruire applicazioni reali - Firenze
-
Speciale Windows Azure: la piattaforma di Microsoft per il cloud computing
-
#157 - Serializzare e deserializzare in JSON con DataContractJsonSerializer
-
#137 - Utilizzare i Glyphs per migliorare le performance in WPF
-
#56 - Blue Style ProgressBar per Silverlight 2.0
-
Introduzione al framework Javascript jQuery con esempi pratici di utilizzo
-
#1000 - Gestire l'input di date tramite il controllo DatePicker di jQuery UI
-
#66 - ListBox style per Silverlight 3.0
-
#999 - Mostrare una finestra di dialogo popolata tramite AJAX utilizzando jQuery
-
Real Code Day 4.0: Agenda (quasi) completata!
-
Disponibile il Silverlight Toolkit March 2009 Release

















Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.