#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
-
Rilasciata la Preview 1 di ASP.NET MVC 2
-
#67 - RadioButton style animato per Silverlight 3.0
-
Disponibile Microsoft Expression Studio 3
-
Preview 2 di ASP.NET MVC 2.0 ed una nuova versione per AJAX Control Toolkit
-
#46 - Permettere il Drag-and-drop solo su zone predefinite con Silverlight 2.0
-
#silverlight in Windows Embedded CE 6.0 R3 http://u.aspitalia.com/az
-
Daniele goes to Hollywood: il mio nuovo libro "ASP.NET 4.0 in practice"
-
#129 - Ruotare la camera di una scena 3D di WPF con il mouse
-
jQuery diventa centrale nella strategia Microsoft per ASP.NET
-
Realizzare un sito completo in Silverlight: una galleria fotografica
-
#adonetdataservices v1.5 CTP 2 con supporto al #databinding per #wpf e #silverlight su http://u.aspitalia.com/ac
-
Architettura del software: l'object model per le applicazioni web

















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