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
Ricevere notifiche sui test con Azure Load Testing
Scrivere selettori CSS più semplici ed efficienti con :is()
Pubblicare un MCP Server in GitHub MCP Registry
Keynote .NET Conference Italia 2025
Semplificare i deployment con le label in Azure Container App
Configurare OpenAI in .NET Aspire
Ridimensionamento automatico input tramite CSS
Esporre tool MCP con Azure Functions
Combinare Container Queries e Media Queries
Documentare i servizi REST con Swagger e OpenAPI con .NET 9
Gestione CSS in Blazor con .NET 9
Autenticazione di git tramite Microsoft Entra ID in Azure DevOps
I più letti di oggi
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Sfruttare una CDN con i bundle di ASP.NET
- Esaminare documenti XML con namespace utilizzando LINQ to XML
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Inserire le news di Punto Informatico nel proprio sito
- Effetto turnstile su tutte le pagine con il Windows Phone Toolkit
- Le DirectInk API nella Universal Windows Platform
- Gli oggetti CallOut di Expression Blend 4.0


