Condividi tramite


EventToCommandBehavior

EventToCommandBehavior è un oggetto behavior che consente all'utente di richiamare un oggetto Command tramite un oggetto Event. È progettato per associare comandi agli eventi esposti da controlli che non sono stati progettati per supportare i comandi. Consente di eseguire il mapping di qualsiasi evento arbitrario in un controllo a un comando.

Importante

I comportamenti di .NET MAUI Community Toolkit non impostano l'oggetto BindingContext di un comportamento, perché i comportamenti possono essere condivisi e applicati a più controlli tramite stili. Per altre informazioni, vedere Comportamenti MAUI di .NET

Sintassi

Negli esempi seguenti viene illustrato come aggiungere un EventToCommandBehavior oggetto a un Button controllo e quindi gestire l'evento clicked.

XAML

Inclusione dello spazio dei nomi XAML

Per usare il toolkit in XAML, è necessario aggiungere le informazioni seguenti xmlns nella pagina o nella visualizzazione:

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

Di conseguenza:

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

Verrà modificato in modo da includere l'oggetto xmlns come indicato di seguito:

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

Uso di EventToCommandBehavior

Può EventToCommandBehavior essere usato come segue in 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#

Può EventToCommandBehavior essere usato come indicato di seguito in 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# Markup

Il CommunityToolkit.Maui.Markup pacchetto offre un modo molto più conciso per usarlo Behavior in C#.

using CommunityToolkit.Maui.Markup;

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

Accesso a EventArgs dall'evento

È possibile che l'oggetto EventArgs dell'evento specifico venga passato a Command. A questo scopo è possibile procedere in due modi:

1. Usare l'implementazione generica

Utilizzando l'implementazione EventToCommandBehavior<T>EventArgs , verrà passato alla Command proprietà se entrambe le CommandParameter proprietà e Converter non sono impostate. Per fare riferimento al tipo generico in XAML, è necessario usare la x:TypeArguments direttiva .

Nell'esempio seguente viene illustrato come usare l'implementazione generica per passare al WebNavigatedEventArgs comando .

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

2. Utilizzare la proprietà Converter

Quando si usa questo behavior oggetto con eventi di selezione o tocco esposti da ListView un convertitore aggiuntivo, è necessario. Questo convertitore converte gli argomenti dell'evento in un parametro di comando che viene quindi passato all'oggetto Command. Sono disponibili anche in .NET MAUI Community Toolkit:

Proprietà

Proprietà Type Descrizione
EventName string Nome dell'evento che deve essere associato a un oggetto Command.
Comando ICommand Oggetto Command che deve essere eseguito.
CommandParameter oggetto Parametro facoltativo da inoltrare all'oggetto Command.
EventArgsConverter IValueConverter Oggetto facoltativo IValueConverter che può essere usato per convertire EventArgs i valori in valori passati in Command.

Esempi

È possibile trovare un esempio di questo comportamento in azione nell'applicazione di esempio .NET MAUI Community Toolkit.

API

È possibile trovare il codice sorgente per EventToCommandBehavior over nel repository GitHub di .NET MAUI Community Toolkit.