Sdílet prostřednictvím


StateToBooleanConverter

Jedná se StateToBooleanConverter o jednosměrný převaděč, který vrací boolean výsledek na základě toho, zda zadaná hodnota je konkrétní LayoutState.

Metoda Convert vrátí boolean výsledek na základě toho, zda zadaná hodnota je konkrétní LayoutState. Výčet LayoutState poskytuje sada nástrojů a nabízí možné hodnoty:

  • None
  • Loading
  • Saving
  • Success
  • Error
  • Empty
  • Custom

Poznámka:

Všimněte si, že očekávaný LayoutState stav lze zadat v následujícím pořadí priorit:

  1. ConverterParameter jako v vazbě převaděče; nahrazuje vlastnost StateToCompare
  2. StateToCompare jako vlastnost v převaděči

Metoda ConvertBack není podporována.

BaseConverter – vlastnosti

V základní třídě jsou implementovány následující vlastnosti: public abstract class BaseConverter

Vlastnost Popis
DefaultConvertReturnValue Výchozí hodnota, která se má vrátit při IValueConverter.Convert(object?, Type, object?, CultureInfo?) vyvolání .Exception Tato hodnota se používá, když Je nastavena možnost trueCommunityToolkit.Maui.Options.ShouldSuppressExceptionsInConverters .
DefaultConvertBackReturnValue Výchozí hodnota, která se má vrátit při IValueConverter.ConvertBack(object?, Type, object?, CultureInfo?) vyvolání .Exception Tato hodnota se používá, když Je nastavena možnost trueCommunityToolkit.Maui.Options.ShouldSuppressExceptionsInConverters .

ICommunityToolkitValueConverter – vlastnosti

Následující vlastnosti jsou implementovány v public interface ICommunityToolkitValueConverter:

Vlastnost Type Popis
DefaultConvertReturnValue object? Výchozí hodnota, která se má vrátit při IValueConverter.Convert(object?, Type, object?, CultureInfo?) vyvolání .Exception Tato hodnota se používá, když Je nastavena možnost trueCommunityToolkit.Maui.Options.ShouldSuppressExceptionsInConverters .
DefaultConvertBackReturnValue object? Výchozí hodnota, která se má vrátit při IValueConverter.ConvertBack(object?, Type, object?, CultureInfo?) vyvolání .Exception Tato hodnota se používá, když Je nastavena možnost trueCommunityToolkit.Maui.Options.ShouldSuppressExceptionsInConverters .

Syntaxe

Následující příklad ukazuje, jak pomocí převaděče změnit viditelnost Label ovládacího prvku na LayoutState základě vlastnosti, která je upravena Button Commandna .

XAML

Zahrnutí oboru názvů XAML

Pokud chcete použít sadu nástrojů v XAML, musíte do stránky nebo zobrazení přidat následující xmlns položky:

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

Proto platí následující:

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

Bylo by změněno tak, aby zahrnovalo xmlns následující:

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

Použití StateToBooleanConverter

V XAML je možné ho StateToBooleanConverter použít následujícím způsobem:

<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.StateToBooleanConverterPage">

    <ContentPage.Resources>
        <ResourceDictionary>
            <toolkit:StateToBooleanConverter x:Key="StateToBooleanConverter" StateToCompare="Success" />
        </ResourceDictionary>
    </ContentPage.Resources>

    <VerticalStackLayout VerticalOptions="Center">
        <Label
            HorizontalOptions="Center"
            IsVisible="{Binding LayoutState, Converter={StaticResource StateToBooleanConverter}}"
            Text="The state is Success!"
            VerticalOptions="Center" />
        <Button Command="{Binding ChangeLayoutCommand}" Text="Change state" />
    </VerticalStackLayout>

</ContentPage>

C#

V StateToBooleanConverter jazyce C# je možné ho použít následujícím způsobem:

class StateToBooleanConverterPage : ContentPage
{
    public StateToBooleanConverterPage()
    {
        var label = new Label
        {
            HorizontalOptions = LayoutOptions.Center,
            Text = "The state is Success!",
            VerticalOptions = LayoutOptions.Center
        };

        label.SetBinding(
            Label.IsVisibleProperty,
            new Binding(
                nameof(ViewModel.LayoutState),
                converter: new StateToBooleanConverter { StateToCompare = LayoutState.Success }));

        var button = new Button
        {
            Text = "Change state"
        };
    
        button.SetBinding(
            Button.CommandProperty,
            nameof(ViewModel.ChangeLayoutCommand));

        Content = new VerticalStackLayout
        {
            Children = 
            {
                label,
                button
            }
        };
    }
}

Revize jazyka C#

Náš CommunityToolkit.Maui.Markup balíček nabízí mnohem stručnější způsob použití tohoto převaděče v jazyce C#.

using CommunityToolkit.Maui.Markup;

class StateToBooleanConverterPage : ContentPage
{
    public StateToBooleanConverterPage()
    {
        Content = new VerticalStackLayout
        {
            Children = 
            {
                new Label()
                    .Text("The state is Success!")
                    .CenterHorizontal()
                    .CenterVertical()
                    .Bind(
                        Label.IsVisibleProperty,
                        static (ViewModel vm) => vm.LayoutState,
                        converter: new StateToBooleanConverter { StateToCompare = LayoutState.Success }),

                new Button()
                    .Text("Change state")
                    .BindCommand(static (ViewModel vm) => vm.ChangeLayoutCommand)
            }
        };
    }
}

Příklady

Příklad tohoto převaděče najdete v akci v ukázkové aplikaci .NET MAUI Community Toolkit.

rozhraní API

Zdrojový kód StateToBooleanConverter najdete v úložišti .NET MAUI Community Toolkit na GitHubu.