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
GitHub Quick Review per la valutazione dello stato di compliance dell'organizzazione aziendale
Analizzare il contenuto di una issue con GitHub Models e AI
Le cron expression di un workflow di GitHub
Esporre un server MCP esistente con Azure API Management
Cache temporanea in Javascript con oggetti
Utilizzare i command service nei test con .NET Aspire
Stop Building Chatbots. Build a team
Semplificare i deployment con le label in Azure Container App
Mischiare codice server side e client side in una query LINQ con Entity Framework
Raggruppamento degli aggiornamenti di dipendenze tra directory in un monorepo con Dependabot
Gestire pubblicazione Kubernetes tramite .NET Aspire
Microsoft Fabric: la piattaforma unificata per l'ecosistema dati moderno
I più letti di oggi
- Disponibile .NET 11 RC1 con aggiornamenti per runtime, SDK, MSBuild, NuGet e i principali framework della piattaforma. Un rilascio interessante per chi lavora su applicazioni cloud, web e desktop con stack Microsoft. #dotnet #csharp #aspnetcore #devops https://aspit.co/cjz
- Uso del designer di VS 2008 con Entity Framework
- Sviluppare per i wearable: Microsoft Band SDK


