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


EventToCommandBehavior

Это EventToCommandBehavior то behavior , что позволяет пользователю вызывать его Command через Event. Он предназначен для связывания команд с событиями, предоставляемыми элементами управления, которые не были разработаны для поддержки команд. Он позволяет сопоставить любое произвольное событие элемента управления с командой.

Внимание

Поведение сообщества .NET MAUI набор средств не задает BindingContext поведение, так как поведение можно совместно использовать и применять к нескольким элементам управления с помощью стилей. Дополнительные сведения см. в статье о поведении .NET MAUI

Синтаксис

В следующих примерах показано, как добавить элемент EventToCommandBehaviorButton управления, а затем обработать событие щелчка.

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>

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

Его EventToCommandBehavior можно использовать следующим образом в 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"
    x:Name="Page">
    
    <Button>
        <Button.Behaviors>
            <toolkit:EventToCommandBehavior
                EventName="Clicked"
                Command="{Binding Source={x:Reference Page}, Path=BindingContext.MyCustomCommand}" />
        </Button.Behaviors>
    </Button>
</ContentPage>

C#

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

class EventToCommandBehaviorPage : ContentPage
{
    public EventToCommandBehaviorPage()
    {
        var button = new Button();

        var behavior = new EventToCommandBehavior
        {
            EventName = nameof(Button.Clicked),
            Command = new MyCustomCommand()
        };

        button.Behaviors.Add(behavior);

        Content = entry;
    }
}

Разметка C#

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

using CommunityToolkit.Maui.Markup;

class EventToCommandBehaviorPage : ContentPage
{
    public EventToCommandBehaviorPage()
    {
        Content = new Button()
        .Behaviors(new EventToCommandBehavior
        {
            EventName = nameof(Button.Clicked),
            Command = new MyCustomCommand()
        });                 
    }
}

Доступ к EventArgs из события

Можно передать EventArgs определенное событие в .Command Это достигается двумя способами.

1. Использование универсальной реализации

Используя реализацию EventToCommandBehavior<T> , EventArgs она будет передана в Command свойство, если CommandParameterConverter оба свойства не заданы. Чтобы ссылаться на универсальный тип в XAML, необходимо использовать директиву x:TypeArguments .

В следующем примере показано, как использовать универсальную реализацию для передачи WebNavigatedEventArgs команды.

<WebView Source="https://github.com">
    <WebView.Behaviors>
        <toolkit:EventToCommandBehavior
            x:TypeArguments="WebNavigatedEventArgs"
            EventName="Navigated"
            Command="{Binding WebViewNavigatedCommand}" />
    </WebView.Behaviors>
</WebView>

2. Использование свойства Converter

При использовании этого behavior с выделением или касанием событий, предоставляемых дополнительным ListView преобразователем, требуется. Этот преобразователь преобразует аргументы события в параметр команды, который затем передается в Command. Они также доступны в набор средств сообщества .NET MAUI:

Свойства

Свойство Type Описание
EventName строка Имя события, которое должно быть связано с Command.
Команда ICommand Это Command должно быть выполнено.
CommandParameter объект Необязательный параметр для переадресации в Command.
EventArgsConverter IValueConverter Необязательный IValueConverter атрибут, который можно использовать для преобразования EventArgs значений в значения, передаваемые в .Command

Примеры

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

API

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