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
Eseguire una ricerca avanzata per recuperare le issue di GitHub
Utilizzare Model as a Service su Microsoft Azure
Le novità di Angular: i miglioramenti alla CLI
Utilizzare i primary constructor di C# per inizializzare le proprietà
Gestire la cancellazione di una richiesta in streaming da Blazor
Popolare una classe a partire dal testo, con Semantic Kernel e ASP.NET Core Web API
Usare i servizi di Azure OpenAI e ChatGPT in ASP.NET Core con Semantic Kernel
Migliorare i tempi di risposta di GPT tramite lo streaming endpoint in ASP.NET Core
Eseguire script pre e post esecuzione di un workflow di GitHub
Generare la software bill of material (SBOM) in GitHub
Ordine e importanza per @layer in CSS
Garantire la provenienza e l'integrità degli artefatti prodotti su GitHub