Udostępnij za pośrednictwem


StringToListConverter

Jest StringToListConverter to jeden ze sposobów konwerter, który zwraca zestaw podciągów przez podzielenie ciągu wejściowego na podstawie jednego lub większej liczby separatorów.

Metoda Convert zwraca zestaw podciągów, dzieląc ciąg wejściowy na podstawie jednego lub większej liczby separatorów.

Uwaga

Należy pamiętać, że separatory można podać w następującej kolejności pierwszeństwa:

  1. ConverterParameter jako w powiązaniu konwertera; zastępuje to zarówno właściwości, jak Separators i Separator
  2. Separators jako właściwość konwertera; zastępuje to Separator właściwość
  3. Separator jako właściwość konwertera.

Metoda nie jest obsługiwana ConvertBack . Aby uzyskać odwrotne zachowanie, zobacz .ListToStringConverter

Właściwości obiektu BaseConverter

Następujące właściwości są implementowane w klasie bazowej: public abstract class BaseConverter

Właściwości opis
DefaultConvertReturnValue Wartość domyślna, która ma być zwracana, gdy IValueConverter.Convert(object?, Type, object?, CultureInfo?) zgłasza wartość Exception. Ta wartość jest używana, gdy właściwość CommunityToolkit.Maui.Options.ShouldSuppressExceptionsInConverters jest ustawiona na truewartość .
DefaultConvertBackReturnValue Wartość domyślna, która ma być zwracana, gdy IValueConverter.ConvertBack(object?, Type, object?, CultureInfo?) zgłasza wartość Exception. Ta wartość jest używana, gdy właściwość CommunityToolkit.Maui.Options.ShouldSuppressExceptionsInConverters jest ustawiona na truewartość .

Właściwości ICommunityToolkitValueConverter

Następujące właściwości są implementowane w pliku public interface ICommunityToolkitValueConverter:

Właściwość Type Opis
DefaultConvertReturnValue object? Wartość domyślna, która ma być zwracana, gdy IValueConverter.Convert(object?, Type, object?, CultureInfo?) zgłasza wartość Exception. Ta wartość jest używana, gdy właściwość CommunityToolkit.Maui.Options.ShouldSuppressExceptionsInConverters jest ustawiona na truewartość .
DefaultConvertBackReturnValue object? Wartość domyślna, która ma być zwracana, gdy IValueConverter.ConvertBack(object?, Type, object?, CultureInfo?) zgłasza wartość Exception. Ta wartość jest używana, gdy właściwość CommunityToolkit.Maui.Options.ShouldSuppressExceptionsInConverters jest ustawiona na truewartość .

Składnia

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

Można StringToListConverter 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.StringToListConverterPage">

    <ContentPage.Resources>
        <ResourceDictionary>
             <toolkit:StringToListConverter x:Key="StringToListConverter" SplitOptions="RemoveEmptyEntries">
                <toolkit:StringToListConverter.Separators>
                    <x:String>,</x:String>
                    <x:String>.</x:String>
                    <x:String>;</x:String>
                </toolkit:StringToListConverter.Separators>
            </toolkit:StringToListConverter>
        </ResourceDictionary>
    </ContentPage.Resources>

    <VerticalStackLayout>
        <Entry
            Placeholder="Enter some text separated by ',' or '.' or ';'"
            Text="{Binding MyValue}" />

        <CollectionView ItemsSource="{Binding MyValue, Converter={StaticResource StringToListConverter}}">
            <CollectionView.ItemTemplate>
                <DataTemplate>
                    <Label Text="{Binding .}" />
                </DataTemplate>
            </CollectionView.ItemTemplate>
        </CollectionView>
    </VerticalStackLayout>

</ContentPage>

C#

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

class StringToListConverterPage : ContentPage
{
    public StringToListConverterPage()
    {
        var entry = new Entry { Placeholder = "Enter some text separated by ',' or '.' or ';'" };
        entry.SetBinding(Entry.TextProperty, new Binding(static (ViewModel vm) => vm.MyValue));

        var stringToListConverter = new StringToListConverter
        {
            SplitOptions = System.StringSplitOptions.RemoveEmptyEntries,
            Separators = new [] { ",", ".", ";" }
        };

        var collectionView = new CollectionView
        {
            ItemTemplate = new DataTemplate(() =>
            {
                var itemLabel = new Label();
                itemLabel.SetBinding(Label.TextProperty, path: ".");
                return itemLabel;
            })
        };

        collectionView.SetBinding(
            CollectionView.ItemsSourceProperty,
            new Binding(
                static (ViewModel vm) => vm.MyValue,
                converter: stringToListConverter));

        Content = new VerticalStackLayout
        {
            Children =    
            {
                entry,
                collectionView
            }
        };
    }
}

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

using CommunityToolkit.Maui.Markup;

class StringToListConverterPage : ContentPage
{
    public StringToListConverterPage()
    {
        Content = new VerticalStackLayout
        {
            Children =    
            {
                new Entry { Placeholder = "Enter some text separated by ',' or '.' or ';'" }
                    .Bind(
                        Entry.TextProperty, 
                        static (ViewModel vm) => vm.MyValue),

                new CollectionView
                {
                    ItemTemplate = new DataTemplate(() => new Label().Bind(Label.TextProperty, path: Binding.SelfPath))
                }.Bind(
                    CollectionView.ItemsSourceProperty,
                    static (ViewModel vm) => vm.MyValue,
                    converter: new StringToListConverter
                    {
                        SplitOptions = System.StringSplitOptions.RemoveEmptyEntries,
                        Separators = new [] { ",", ".", ";" }
                    })
            }
        };
    }
}

Właściwości

Właściwości Type Opis
Separator string Ciąg, który rozdziela podciągi w ciągu przychodzącym. Ta wartość jest zastępowana zarówno przez , jak ConverterParameter i Separators. Jeśli ConverterParameter wartość jest null pusta, Separators zostanie użyta ta wartość.
Separatory IList<string> Ciągi, które rozdzielają podciągi w ciągu przychodzącym. Ta wartość jest zastępowana przez ConverterParameter. Jeśli ConverterParameter ta null wartość zostanie użyta.
Podziałopcje StringSplitOptions Bitowa kombinacja wartości wyliczenia, która określa, czy przycinać podciągy i uwzględniać puste podciągy.

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 StringToListConverter znaleźć w repozytorium GitHub zestawu narzędzi .NET MAUI Community Toolkit.