Udostępnij za pośrednictwem


MultiConverter

Funkcja MultiConverter konwertuje wartość przychodzącą przy użyciu wszystkich konwerterów przychodzących w sekwencji. Kolejność, w jakiej są używane konwertery, zależy od kolejności, w jakiej są zdefiniowane.

Składnia

W tym przykładzie pokazano, jak używać z MultiConverter elementami IsEqualConverter i TextCaseConverter. Konwertuje wprowadzony tekst na wielkie litery , a następnie sprawdza, czy jest on równy ciągowi "MAUI", spowoduje boolean to wartość i jest powiązana z IsVisible właściwością kontrolki Label .

W tym przykładzie użyto parametru MultiConverterParameter , który umożliwia zdefiniowanie parametru ConverterParameter dla typu konwertera MultiConverterParameter ustawiono wartość .

XAML

Dołączanie przestrzeni nazw XAML

Aby można było używać zestawu narzędzi w języku XAML, należy dodać następujące xmlns elementy do strony lub widoku:

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

W związku z tym następujące elementy:

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

Zostanie zmodyfikowana tak, aby zawierała następujące xmlns elementy:

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

Korzystanie z funkcji MultiConverter

Można MultiConverter go użyć w następujący sposób w języku 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.MultiConverterPage">

    <ContentPage.Resources>
        <ResourceDictionary>
            <toolkit:MultiConverter x:Key="MyMultiConverter">
                <toolkit:TextCaseConverter />
                <toolkit:IsEqualConverter />
            </toolkit:MultiConverter>
            <x:Array x:Key="MultiParams"
                     Type="{x:Type toolkit:MultiConverterParameter}">
                <toolkit:MultiConverterParameter
                    ConverterType="{x:Type toolkit:TextCaseConverter}"
                    Value="{x:Static toolkit:TextCaseType.Upper}" />
                <toolkit:MultiConverterParameter
                    ConverterType="{x:Type toolkit:IsEqualConverter}"
                    Value="MAUI" />
            </x:Array>
        </ResourceDictionary>
    </ContentPage.Resources>

    <Label IsVisible="{Binding EnteredName, Converter={StaticResource MyMultiConverter}, ConverterParameter={StaticResource MultiParams}, Mode=OneWay}" 
           Text="Well done you guessed the magic word!"/>

</ContentPage>

C#

Można MultiConverter go użyć w następujący sposób w języku C#:

class MultiConverterPage : ContentPage
{
    public MultiConverterPage()
    {
        var label = new Label { Text = "Well done you guessed the magic word!" };

        var converter = new MultiConverter
        {
            new TextCaseConverter(),
            new IsEqualConverter()
        };

        var parameters = new List<MultiConverterParameter>
        {
            new MultiConverterParameter { ConverterType = typeof(TextCaseConverter), Value = TextCaseType.Upper },
            new MultiConverterParameter { ConverterType = typeof(IsEqualConverter), Value = "MAUI" },
        };

        label.SetBinding(
            Label.IsVisibleProperty,
            new Binding(
                static (ViewModels vm) => vm.EnteredName,
                converter: converter,
                converterParameter: parameters));

        Content = label;
    }
}

Znaczniki języka C#

Nasz CommunityToolkit.Maui.Markup pakiet zapewnia znacznie bardziej zwięzły sposób używania tego konwertera w języku C#.

class MultiConverterPage : ContentPage
{
    public MultiConverterPage()
    {
        var converter = new MultiConverter
        {
            new TextCaseConverter(),
            new IsEqualConverter()
        };

        var parameters = new List<MultiConverterParameter>
        {
            new MultiConverterParameter { ConverterType = typeof(TextCaseConverter), Value = TextCaseType.Upper },
            new MultiConverterParameter { ConverterType = typeof(IsEqualConverter), Value = "MAUI" },
        };

        Content = new Label()
            .Text("Well done you guessed the magic word!")
            .Bind(
                Label.IsVisibleProperty,
                static (ViewModel vm) => vm.EnteredName,
                converter: converter,
                converterParameter: parameters);
    }
}

Przykłady

Przykład tego konwertera można znaleźć w aplikacji przykładowej zestawu narzędzi .NET MAUI Community Toolkit.

interfejs API

Kod źródłowy można MultiConverter znaleźć w repozytorium GitHub zestawu narzędzi .NET MAUI Community Toolkit.