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
Creare moduli CSS in React
Eseguire un metodo asincrono dopo il set di una proprietà in Blazor 8
Accesso sicuro ai secrets attraverso i file in Azure Container Apps
Creazione di componenti personalizzati in React.js con Tailwind CSS
Mascherare l'output di un valore all'interno dei log di un workflow di GitHub
Sfruttare lo stream rendering per le pagine statiche di Blazor 8
Controllare gli accessi IP alle app con Azure Container Apps
Gestire la cancellazione di una richiesta in streaming da Blazor
Creare un webhook in Azure DevOps
Assegnare un valore di default a un parametro di una lambda in C#
Gestire errori funzionali tramite exception in ASP.NET Core Web API
Generare file PDF da Blazor WebAssembly con iText