Come passare un parametro ad un converter utilizzando il Binding

di Marco Leoncini, in Windows Phone 8,

L'infrastruttura di Binding è senza ombra di dubbio una delle caratteristiche più apprezzate delle moderne piattaforme di sviluppo.
A renderlo più flessibile inoltre c'è la possibilità di trasformare un valore in un altro e viceversa mediante l'utilizzo di classi che implementano l'interfaccia IValueConverter.
Anche se questo meccanismo può sembrare flessibile da adattarsi a qualsiasi scenario, in casi particolari si possono riscontrare dei limiti.
È il caso sella proprietà ConverterParameter, sulla quale non è possibile applicare nessuna espressione di Binding, rendendo di fatto questo parametro pressoché statico.
Questo limite è facilmente aggirabile facendo ereditare la classe che implementa l'interfaccia IValueConverter dal tipo DependencyObject.

   
   public class ValueConvert :  DependencyObject, IValueConverter
    {
        public static readonly DependencyProperty PropertyProperty = DependencyProperty.Register(
            "Property", typeof (string), typeof (ValueConvert), new PropertyMetadata(string.Empty));


        public string Property
        {
            get { return (string) GetValue(PropertyProperty); }
            set { SetValue(PropertyProperty, value); }
        }
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            //uso la proprietà Property al posto del parametro parameter
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }

Una volta creato il converter possiamo aggiungerlo alle risorse e utilizzarlo come da consuetudine.

<comverters:ValueConvert x:Key="ValueConverter" Property="{Binding MyProperty}"  />

L'unica particolarità consiste nel non utilizzare il parametro "parameter" passato al metodo Convert ma la proprietà creato allo scopo.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi