Nello script #37 (https://www.silverlightitalia.com/script/37/Gestione-Dati-Data-Binding-Silverlight-2.0-Converters.aspx) abbiamo visto come sia possibile gestire i valori in binding in modo da associarli ad una proprietà di un controllo, lasciando inalterato il dato originale.
Nell'utilizzo quotidiano è frequente avere proprietà booleane di entità che influenzano grafica e comportamenti come visibilità, colore o altro. Se realizziamo un IValueConverter per ogni scenario è molto probabile che il progetto si affolli di molte classi di codice molto simile. Per ridurre gli oggetti da mantenere possiamo sfruttare i generics e inserire delle proprietà al nostro converter, in modo da specifiare l'oggetto da restituire in funzione di un valore True o False.
Nello snippet seguente vediamo il codice di tale converter:
public class BoolToValueConverter<T> : IValueConverter
{
public T FalseValue { get; set; }
public T TrueValue { get; set; }
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
T returnValue;
if (value == null)
{
returnValue = FalseValue;
}
else
{
bool innerValue = (bool)value;
if (innerValue)
{
returnValue = TrueValue;
}
else
{
returnValue = FalseValue;
}
}
return returnValue;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value != null)
{
return value.Equals(TrueValue);
}
else
{
return false;
}
}
}Per utilizzarlo è sufficiente estendere la classe con una che specifichi il tipo di oggetto gestito:
public class BoolToVisibilityConverter : BoolToValueConverter<Visibility>{ }Come di consueto dobbiamo registrare l'oggetto tra le risorse, specificando i valori nelle proprietà TrueValue e FalseValue che abbiamo aggiunto:
<UserControl.Resources>
<converters:BoolToVisibilityConverter x:Key="BoolToVisibilityConverter"
TrueValue="Visible"
FalseValue="Collapsed" />
L'utilizzo non differisce dai converter tradizionali:
Visibility="{Binding IsVisible, Converter={StaticResource BoolToVisibilityConverter}}"Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Keynote Global Azure 2026 - ASPItalia.com
Usare il metodo nameof con un tipo generico in C# 14
Configurare OpenAI in .NET Aspire
Configuratione e utilizzo .NET Aspire CLI
Rendere affidabile lo scale out su Azure App Service
Arricchire l'interfaccia di .NET Aspire
Esporre tool MCP con Azure Functions
Ottimizzare la content-visibility in CSS specificando lo spazio da occupato dall'area non renderizzata
Creare una file based app con C#
Personalizzare le pagine di errore su Azure App Service
Interagire con Azure DevOps tramite MCP Server
Escludere alcuni file da GitHub Copilot


