Effettuare il multibinding in un'applicazione Xamarin Forms

di Morgan Pizzini, in Windows 10,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi