Partager via


StringToListConverter

Le StringToListConverter est un convertisseur unidirectionnel qui retourne un ensemble de sous-chaînes en fractionnant la chaîne d’entrée en fonction d’un ou plusieurs séparateurs.

La méthode Convert retourne un ensemble de sous-chaînes en fractionnant la chaîne d’entrée en fonction d’un ou plusieurs séparateurs.

Remarque

Notez que les séparateurs peuvent être fournis dans l’ordre de priorité suivant :

  1. en tant que ConverterParameter dans la liaison du convertisseur, cela remplace les propriétés Separators et Separator
  2. en tant que propriété Separators sur le convertisseur, cela remplace la propriété Separator
  3. en tant que propriété Separator sur le convertisseur.

La méthode ConvertBack n’est pas prise en charge. Pour le comportement opposé, voir le ListToStringConverter.

Propriétés 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 lorsque IValueConverter.Convert(object?, Type, object?, CultureInfo?) lève une Exception. Cette valeur est utilisée lorsque les options CommunityToolkit.Maui.Options.ShouldSuppressExceptionsInConverters sont définies sur true.
DefaultConvertBackReturnValue Valeur par défaut à retourner lorsque IValueConverter.ConvertBack(object?, Type, object?, CultureInfo?) lève une Exception. Cette valeur est utilisée lorsque les options CommunityToolkit.Maui.Options.ShouldSuppressExceptionsInConverters sont définies sur true.

Propriétés ICommunityToolkitValueConverter

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

Propriété Type Description
DefaultConvertReturnValue object? Valeur par défaut à retourner lorsque IValueConverter.Convert(object?, Type, object?, CultureInfo?) lève une Exception. Cette valeur est utilisée lorsque les options CommunityToolkit.Maui.Options.ShouldSuppressExceptionsInConverters sont définies sur true.
DefaultConvertBackReturnValue object? Valeur par défaut à retourner lorsque IValueConverter.ConvertBack(object?, Type, object?, CultureInfo?) lève une Exception. Cette valeur est utilisée lorsque les options CommunityToolkit.Maui.Options.ShouldSuppressExceptionsInConverters sont définies sur true.

Syntaxe

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 StringToListConverter

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

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

class StringToListConverterPage : ContentPage
{
    public StringToListConverterPage()
    {
		var entry = new Entry { Placeholder = "Enter some text separated by ',' or '.' or ';'" };
		entry.SetBinding(Entry.TextProperty, new Binding(nameof(ViewModel.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(
				nameof(ViewModel.MyValue),
				converter: stringToListConverter));

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

Balisage C#

Notre package CommunityToolkit.Maui.Markup offre une manière beaucoup plus concise d’utiliser ce convertisseur en 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 [] { ",", ".", ";" }
                    })
            }
        };
    }
}

Propriétés

Propriété Type Description
Séparateur string La chaîne qui délimite les sous-chaînes de la chaîne entrante. Cette valeur est remplacée par ConverterParameter et Separators. Si ConverterParameter est null et que Separators est vide, cette valeur sera utilisée.
Séparateurs IList<string> Les chaînes qui délimitent les sous-chaînes de la chaîne entrante. Cette valeur est remplacée par ConverterParameter. Si ConverterParameter est null, cette valeur sera utilisée.
SplitOptions StringSplitOptions Combinaison au niveau du bit de valeurs d’énumération qui spécifie s’il faut supprimer les sous-chaînes et inclure les sous-chaînes vides.

Exemples

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

API

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