VariableMultiValueConverter

Der VariableMultiValueConverter ist ein Konverter, mit dem Benutzer bool-Werte über ein MultiBinding in ein einzelnes bool konvertieren können. Dadurch können sie angeben, ob "All", "Any", "None" oder eine bestimmte Anzahl von Werten wahr sind, wie in ConditionType angegeben.

Die Methode Convert liefert das bereitgestellte values, konvertiert in ein Gesamt-bool-Ergebnis, basierend auf dem definierten ConditionType.

Die ConvertBack-Methode gibt nur dann ein Ergebnis zurück, wenn der ConditionType-Wert auf MultiBindingCondition.All gesetzt ist.

BaseConverter-Eigenschaften

Die folgenden Eigenschaften werden in der Basisklasse implementiert: public abstract class BaseConverter

Eigentum Beschreibung
DefaultConvertReturnValue Standardwert, der zurückgegeben werden soll, wenn IValueConverter.Convert(object?, Type, object?, CultureInfo?) eine Exception-Ausnahme auslöst. Dieser Wert wird verwendet, wenn CommunityToolkit.Maui.Options.ShouldSuppressExceptionsInConverters auf true festgelegt ist.
DefaultConvertBackReturnValue Standardwert, der zurückgegeben werden soll, wenn IValueConverter.ConvertBack(object?, Type, object?, CultureInfo?) eine Exception-Ausnahme auslöst. Dieser Wert wird verwendet, wenn CommunityToolkit.Maui.Options.ShouldSuppressExceptionsInConverters auf true festgelegt ist.

ICommunityToolkitValueConverter-Eigenschaften

Die folgenden Eigenschaften werden in public interface ICommunityToolkitValueConverter implementiert:

Eigentum Typ Beschreibung
DefaultConvertReturnValue object? Standardwert, der zurückgegeben werden soll, wenn IValueConverter.Convert(object?, Type, object?, CultureInfo?) eine Exception-Ausnahme auslöst. Dieser Wert wird verwendet, wenn CommunityToolkit.Maui.Options.ShouldSuppressExceptionsInConverters auf true festgelegt ist.
DefaultConvertBackReturnValue object? Standardwert, der zurückgegeben werden soll, wenn IValueConverter.ConvertBack(object?, Type, object?, CultureInfo?) eine Exception-Ausnahme auslöst. Dieser Wert wird verwendet, wenn CommunityToolkit.Maui.Options.ShouldSuppressExceptionsInConverters auf true festgelegt ist.

Syntax

Die folgenden Beispiele zeigen, wie Sie eine Label unsichtbar machen, wenn mindestens 2 der Werte in einer MultiBinding zu „true“ ausgewertet werden.

XAML

Einbinden des XAML-Namespace

Um das Toolkit in XAML verwenden zu können, muss der folgende xmlns-Abschnitt zu Ihrer Seite oder Ansicht hinzugefügt werden:

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

Daher das Folgende:

<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>

Würde geändert werden, um das xmlns wie folgt einzubinden:

<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>

Verwenden des VariableMultiValueConverter

Dies VariableMultiValueConverter kann wie folgt in XAML verwendet werden:

<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#

Dies VariableMultiValueConverter kann wie folgt in C# verwendet werden:


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;
    }
}

C#-Markup

Unser CommunityToolkit.Maui.Markup Paket bietet eine viel präzisere Möglichkeit, diesen Konverter in C# zu verwenden.

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
                });
    }
}

Eigenschaften

Eigentum Typ Beschreibung
ConditionType MultiBindingCondition Gibt an, wie viele Werte true aus den bereitgestellten booleschen Werten in der MultiBinding.
Count int Die Anzahl der Werte, die bei der Verwendung von ConditionType mit GreaterThan, LessThan oder Exact „wahr“ sein sollten.

MultiBindingCondition

Die MultiBindingCondition-Aufzählung definiert die folgenden Elemente:

  • None - Keine der Werte sollte wahr sein.
  • All - Alle Werte sollten wahr sein.
  • Any - Jeder der Werte sollte wahr sein.
  • Exact - Die genaue Zahl, die in der Count Eigenschaft konfiguriert ist, sollte wahr sein.
  • GreaterThan - Größer, dass die in der Count Eigenschaft konfigurierte Zahl wahr sein soll.
  • LessThan - Kleiner als die in der Count Eigenschaft konfigurierte Zahl sollte wahr sein.

Beispiele

Sie finden ein Beispiel für diesen Konverter in Aktion im .NET MAUI Community Toolkit-Beispielanwendung.

API

Sie finden den Quellcode für VariableMultiValueConverter im .NET MAUI Community Toolkit GitHub Repository.