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
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
Potenziare la ricerca su Cosmos DB con Full Text Search
Gestire il routing HTTP in Azure Container App
Combinare Container Queries e Media Queries
Testare l'invio dei messaggi con Event Hubs Data Explorer
Gestione ciclo di vita in .NET Aspire
Evitare memory leaks nelle closure JavaScript
Creare una libreria CSS universale: Immagini
Migliorare la scalabilità delle Azure Function con il Flex Consumption
Recuperare App Service cancellati su Azure
Utilizzare Hybrid Cache in .NET 9
Controllare la telemetria con .NET Aspire
I più letti di oggi
- Community Night@Basta!Italia on tour 2009 - Milano
- Windows Phone 7.1 Mango: ecco i tool in beta
- Speciale Razor: il nuovo view engine di WebMatrix e ASP.NET MVC
- Disponibile l'SDK per Windows Phone 7.8
- SQL Server 2005 in beta 2
- Codifica all'avanguardia con .NET MAUI: Scopri le potenzialità di sviluppo multi-piattaforma
- Utilizzare WebAssembly con .NET, ovunque
- Gestire la configurazione di ASP.NET Core su più ambienti
- Calcolare il resto di una divisione
- Segnala questa pagina ad un amico