Partager via


VariableMultiValueConverter

VariableMultiValueConverter est un convertisseur qui permet aux utilisateurs de convertir des valeurs bool via MultiBinding en un seul bool. Pour ce faire, il leur permet de spécifier si All, Any, None ou un nombre spécifique de valeurs sont true, comme indiqué dans ConditionType.

La méthode Convert retourne le values fourni, converti en résultat bool global en fonction de la valeur ConditionType définie.

La méthode ConvertBack retourne un résultat uniquement si ConditionType a la valeur MultiBindingCondition.All.

Propriétés de BaseConverter

Les propriétés suivantes sont implémentées dans la classe de base public abstract class BaseConverter :

Propriété Description
DefaultConvertReturnValue Valeur par défaut à retourner quand IValueConverter.Convert(object?, Type, object?, CultureInfo?) lève Exception. Cette valeur est utilisée quand CommunityToolkit.Maui.Options.ShouldSuppressExceptionsInConverters a la valeur true.
DefaultConvertBackReturnValue Valeur par défaut à retourner quand IValueConverter.ConvertBack(object?, Type, object?, CultureInfo?) lève Exception. Cette valeur est utilisée quand CommunityToolkit.Maui.Options.ShouldSuppressExceptionsInConverters a la valeur true.

Propriétés de ICommunityToolkitValueConverter

Les propriétés suivantes sont implémentées dans public interface ICommunityToolkitValueConverter :

Propriété Type Description
DefaultConvertReturnValue object? Valeur par défaut à retourner quand IValueConverter.Convert(object?, Type, object?, CultureInfo?) lève Exception. Cette valeur est utilisée quand CommunityToolkit.Maui.Options.ShouldSuppressExceptionsInConverters a la valeur true.
DefaultConvertBackReturnValue object? Valeur par défaut à retourner quand IValueConverter.ConvertBack(object?, Type, object?, CultureInfo?) lève Exception. Cette valeur est utilisée quand CommunityToolkit.Maui.Options.ShouldSuppressExceptionsInConverters a la valeur true.

Syntaxe

Les exemples suivants montrent comment rendre Label invisible quand au moins 2 des valeurs de MultiBinding sont true.

XAML

Y compris l’espace de noms XAML

Pour utiliser le kit de ressources dans XAML, le xmlns suivant doit être ajouté à votre page ou à votre affichage :

xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"

Il en résulte ce qui suit :

<ContentPage
    x:Class="CommunityToolkit.Maui.Sample.Pages.MyPage"
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">

</ContentPage>

Serait modifié pour inclure le xmlns de la manière suivante :

<ContentPage
    x:Class="CommunityToolkit.Maui.Sample.Pages.MyPage"
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit">

</ContentPage>

Utilisation de VariableMultiValueConverter

Le VariableMultiValueConverter peut être utilisé de la manière suivante dans XAML :

<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
             x:Class="CommunityToolkit.Maui.Sample.Pages.Converters.VariableMultiValueConverterPage">

    <ContentPage.Resources>
        <ResourceDictionary>
            <toolkit:VariableMultiValueConverter 
                x:Key="VariableMultiValueConverter"
                ConditionType="LessThan"
                Count="2" />
        </ResourceDictionary>
    </ContentPage.Resources>

    <Label Text="At least 2 toppings must be selected.">
        <Label.IsVisible>
            <MultiBinding Converter="{StaticResource VariableMultiValueConverter}">
                <Binding Path="IsCheeseSelected" />
                <Binding Path="IsHamSelected" />
                <Binding Path="IsPineappleSelected" />
            </MultiBinding>
        </Label.IsVisible>
    </Label>

</ContentPage>

C#

Le VariableMultiValueConverter peut être utilisé de la manière suivante dans C# :


class VariableMultiValueConverterPage : ContentPage
{
    public VariableMultiValueConverterPage()
    {
        var label = new Label
        {
            Text = "At least 2 toppings must be selected."
        };

        label.SetBinding(
            Label.IsVisibleProperty,
            new MultiBinding
            {
                Converter = new VariableMultiValueConverter
                {
                    ConditionType = MultiBindingCondition.LessThan,
                    Count = 2
                },
                Bindings = new List<BindingBase>
                {
                    new Binding(static (ViewModel vm) => vm.IsCheeseSelected),
                    new Binding(static (ViewModel vm) => vmIsHamSelected),
                    new Binding(static (ViewModel vm) => vmIsPineappleSelected)
                }
            });

        Content = label;
    }
}

Balisage C#

Notre package CommunityToolkit.Maui.Markup offre un moyen beaucoup plus concis d’utiliser ce convertisseur en C#.

using CommunityToolkit.Maui.Markup;

class VariableMultiValueConverterPage : ContentPage
{
    public VariableMultiValueConverterPage()
    {
        Content = new Label()
            .Text("At least 2 toppings must be selected.")
            .Bind(
                Label.IsVisibleProperty,
                new List<BindingBase>
                {
                    new Binding(static (ViewModel vm) => vm.IsCheeseSelected),
                    new Binding(static (ViewModel vm) => vm.IsHamSelected),
                    new Binding(static (ViewModel vm) => vm.IsPineappleSelected)
                },
                converter: new VariableMultiValueConverter
                {
                    ConditionType = MultiBindingCondition.LessThan,
                    Count = 2
                });
    }
}

Propriétés

Propriété Type Description
ConditionType MultiBindingCondition Indique combien de valeurs doivent être true parmi les valeurs booléennes fournies dans MultiBinding.
Count int Nombre de valeurs qui doivent être true quand vous utilisez le ConditionType GreaterThan, LessThan ou Exact.

MultiBindingCondition

L’énumération MultiBindingCondition définit les membres suivants :

  • None - Aucune des valeurs ne doit être true.
  • All - Toutes les valeurs doivent être true.
  • Any - N’importe quelle valeur doit être true.
  • Exact - Le nombre exact configuré dans la propriété Count doit être true.
  • GreaterThan - Le nombre de valeurs qui sont true doit être supérieur au nombre spécifié dans la propriété Count.
  • LessThan - Le nombre de valeurs qui sont true doit être inférieur au nombre spécifié dans la propriété Count.

Exemples

Vous trouverez un exemple de ce convertisseur en action dans l’exemple d’application du kit de ressources de la communauté .NET MAUI.

API

Vous pouvez trouver le code source deVariableMultiValueConverter sur le référentiel du kit de ressources de la communauté .NET MAUI sur GitHub.