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


ItemTappedEventArgsConverter

Это ItemTappedEventArgsConverter преобразователь, позволяющий пользователям извлекать значение Item из ItemTappedEventArgs объекта. Впоследствии его можно использовать в сочетании с 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>

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

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

    <VerticalStackLayout Padding="10">

        <Label
            Text="The ItemTappedEventArgsConverter is a converter that allows users to extract the Item value from an ItemTappedEventArgs 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="ItemTapped"
                                                Command="{Binding ItemTappedCommand}"
                                                EventArgsConverter="{StaticResource ItemTappedEventArgsConverter}" />
            </ListView.Behaviors>
        </ListView>
    </VerticalStackLayout>
</ContentPage>

C#

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

class ItemTappedEventArgsConverterPage : ContentPage
{
    public ItemTappedEventArgsConverterPage()
    {
        var behavior = new EventToCommandBehavior
        {
            EventName = nameof(ListView.ItemTapped),
            EventArgsConverter = new ItemTappedEventArgsConverter()
        };
        behavior.SetBinding(EventToCommandBehavior.CommandProperty, nameof(ViewModel.ItemTappedCommand);

        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 ItemTappedEventArgsConverterPage : ContentPage
{
    public ItemTappedEventArgsConverterPage()
    {
        Content = new ListView
        {
            HasUnevenRows = true
        }
        .Bind(
            ListView.ItemsSourceProperty,
            static (ViewModel vm) => vm.Items)
        .Behaviors(
            new EventToCommandBehavior
            {
                EventName = nameof(ListView.ItemTapped),
                EventArgsConverter = new ItemTappedEventArgsConverter()
            }
            .Bind(
                EventToCommandBehavior.CommandProperty, 
                static (ViewModel vm) => vm.ItemTappedCommand,
                mode: BindingMode.OneTime));
    }
}

Примеры

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

API

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