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
Escludere alcuni file da GitHub Copilot
Definire il colore di una scrollbar HTML tramite CSS
Gestione dei prompt file a livello di organizzazione aziendale in GitHub
Creare un agente A2Acon Azure Logic Apps
Usare la libreria PredicateBuilder per eseguire query tramite Entity Framework che usano or su più campi
Integrare modelli AI in un workflow di GitHub
Personalizzare i parametri del CSS Scroll Snap
DevSecOps per .NET: dalla teoria alla pratica
Configurare automaticamente un webhook in Azure DevOps
Utilizzare noopener e noreferrer nei link HTML
Utilizzare WebJobs su Linux con Azure App Service
Eliminare record doppi in Sql Server
I più letti di oggi
- Microsoft Mobility Conference, 12 Luglio a Roma
- Ci vediamo a Milano per i nostri prossimi eventi! ## Global Azure 2026 - 16 aprile ## Una giornata dedicata alle ultime novità di Azure, pensata per architetti, sviluppatori e professionisti IT che vogliono rimanere aggiornati sulle migliori pratiche cloud di Microsoft. https://aspit.co/globalazure-26 ## Future Dev Day - 27 maggio ##Una giornata dedicata al futuro dello sviluppo software con AI, agenti intelligenti e tecnologie emergenti, pensata per architetti, sviluppatori e professionisti IT che vogliono scoprire come l'intelligenza artificiale sta trasformando il modo di sviluppare applicazioni. https://aspit.co/futuredev-26 Vi aspettiamo!
- Blazor Conference 2021 - Online
- devConf 2022 - Online
- Speciale per il lancio di Visual Studio 2008, SQL Server 2008 e Windows Server 2008 dal 25/02 al 07/03
- Speciale ASP.NET Charting: grafici per tutti i gusti!




