Una delle feature più richieste dalla community Xamarin, è la possibilità di effettuare il binding attraverso più proprietà distinte. Questo è possibile, a partire da Xamarin 4.7, tramite l'uso del "controllo" MultiBinding:
<Label> <Label.Text> <MultiBinding StringFormat="{}{0} {1} {2}"> <Binding Path="Persona.Nome" /> <Binding Path="Persona.Cognome" /> <Binding Path="Persona.AnnoDiNascita" /> </MultiBinding> </Label.Text> </Label>
In questo caso, il vantaggio è che viene gestito tutto da XAML, non abbiamo avuto la necessità di dover trasformare all'interno del modello la proprietà, crearne una ad-hoc per il binding o farne un ToString().
Tramite l'implementazione dell'interfaccia IMultiValueConverter, invece, è anche possibile gestire tutti i valori forniti all'interno di un converter.
<MultiBinding Converter="{StaticResource AllTrueConverter}"> <Binding Path="Example.IsMale" /> <Binding Path="Example.IsMoreThan30" /> </MultiBinding>
Nell'esempio evidenziato il valore ritornato dal converter potrà essere assengato, ad esempio, ad un controllo di tipo CheckBox, solo nel caso in cui entrambi i valori siano validati:
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { foreach (var value in values) { if (!(value is bool b)) { return false; } else if (!b) { return false; } } return true; }
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core
Usare i settings di serializzazione/deserializzazione di System.Text.Json di ASP.NET all'interno di un'applicazione non web
Ottimizzare le performance usando Span<T> e il metodo Split
Ottimizzazione dei block template in Angular 17
Utilizzare il nuovo modello GPT-4o con Azure OpenAI
Migliorare l'organizzazione delle risorse con Azure Policy
Utilizzare Locust con Azure Load Testing
Estrarre dati randomici da una lista di oggetti in C#
Utilizzare gRPC su App Service di Azure
Applicare un filtro per recuperare alcune issue di GitHub
Gestire il colore CSS con HWB
Utilizzare Copilot con Azure Cosmos DB