Поделиться через


SelectedItemEventArgsConverter

Это SelectedItemEventArgsConverter преобразователь, позволяющий пользователям извлекать значение SelectedItem из SelectedItemChangedEventArgs объекта. Впоследствии его можно использовать в сочетании с EventToCommandBehavior.

Свойства BaseConverter

Следующие свойства реализуются в базовом классе: public abstract class BaseConverter

Свойство Description
DefaultConvertReturnValue Значение по умолчанию, возвращаемое при IValueConverter.Convert(object?, Type, object?, CultureInfo?) вызове Exception. Это значение используется, когда сообщество набор средств. Для Maui.Options.ShouldSuppressExceptionsInConverters задано значение true.
DefaultConvertBackReturnValue Значение по умолчанию, возвращаемое при IValueConverter.ConvertBack(object?, Type, object?, CultureInfo?) вызове Exception. Это значение используется, когда сообщество набор средств. Для Maui.Options.ShouldSuppressExceptionsInConverters задано значение true.

Свойства ICommunity набор средств ValueConverter

В следующих свойствах реализованы public interface ICommunityToolkitValueConverterследующие свойства:

Свойство Type Описание
DefaultConvertReturnValue object? Значение по умолчанию, возвращаемое при IValueConverter.Convert(object?, Type, object?, CultureInfo?) вызове Exception. Это значение используется, когда сообщество набор средств. Для Maui.Options.ShouldSuppressExceptionsInConverters задано значение true.
DefaultConvertBackReturnValue object? Значение по умолчанию, возвращаемое при IValueConverter.ConvertBack(object?, Type, object?, CultureInfo?) вызове Exception. Это значение используется, когда сообщество набор средств. Для Maui.Options.ShouldSuppressExceptionsInConverters задано значение true.

Синтаксис

XAML

Включение пространства имен XAML

Чтобы использовать набор средств в XAML, xmlns необходимо добавить на страницу или представление следующее:

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

Поэтому следующее:

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

Будет изменено, чтобы включить следующее xmlns :

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

Использование SelectedItemEventArgsConverter

Его SelectedItemEventArgsConverter можно использовать следующим образом в 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="MyLittleApp.MainPage">
    <ContentPage.Resources>
         <ResourceDictionary>
             <toolkit:SelectedItemEventArgsConverter x:Key="SelectedItemEventArgsConverter" />
         </ResourceDictionary>
    </ContentPage.Resources>

     <VerticalStackLayout Padding="10">

        <Label
            Text="The SelectedItemEventArgsConverter is a converter that allows users to extract the SelectedItem value from an SelectedItemChangedEventArgs object. It can subsequently be used in combination with EventToCommandBehavior."
            TextColor="{StaticResource NormalLabelTextColor}"
            Margin="0, 0, 0, 20" />

        <ListView
            BackgroundColor="Transparent"
            ItemsSource="{Binding Items}"
            SelectedItem="{Binding ItemSelected, Mode=TwoWay}">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <VerticalStackLayout Margin="6">
                            <Label Text="{Binding Name, StringFormat='Name: {0}'}"/>
                        </VerticalStackLayout>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
            <ListView.Behaviors>
                <toolkit:EventToCommandBehavior EventName="ItemSelected"
                                                Command="{Binding ItemSelectedCommand}"
                                                EventArgsConverter="{StaticResource SelectedItemEventArgsConverter}" />
            </ListView.Behaviors>
        </ListView>
    </VerticalStackLayout>
</ContentPage>

C#

Его SelectedItemEventArgsConverter можно использовать следующим образом в C#:

class SelectedItemEventArgsConverterPage : ContentPage
{
    public SelectedItemEventArgsConverterPage()
    {
        var behavior = new EventToCommandBehavior
        {
            EventName = nameof(ListView.ItemSelected),
            EventArgsConverter = new SelectedItemEventArgsConverter()
        };
        behavior.SetBinding(EventToCommandBehavior.CommandProperty, nameof(ViewModel.ItemSelectedCommand);

        var listView = new ListView 
        { 
            HasUnevenRows = true 
        };
        listView.SetBinding(ListView.ItemsSource, nameof(ViewModel.Items));
        listView.Behaviors.Add(behavior);

        Content = listView;
    }
}

Разметка C#

Наш CommunityToolkit.Maui.Markup пакет предоставляет гораздо более краткий способ использования этого преобразователя в C#.

using CommunityToolkit.Maui.Markup;

class SelectedItemEventArgsConverterPage : ContentPage
{
    public SelectedItemEventArgsConverterPage()
    {
        Content = new ListView
        {
            HasUnevenRows = true
        }
        .Bind(
            ListView.ItemsSourceProperty,
            static (ViewModel vm) => vm.Items)
        .Behaviors(
            new EventToCommandBehavior
            {
                EventName = nameof(ListView.ItemSelected),
                EventArgsConverter = new SelectedItemEventArgsConverter()
            }
            .Bind(
                EventToCommandBehavior.CommandProperty, 
                nameof(ViewModel.ItemTappedCommand)));                   
    }
}

Примеры

Пример этого преобразователя можно найти в действии в сообществе .NET MAUI набор средств пример приложения.

API

Исходный код SelectedItemEventArgsConverter можно найти в репозитории сообщества .NET MAUI набор средств GitHub.