Partager via


EventToCommandBehavior

Le EventToCommandBehavior est un behavior qui permet à l’utilisateur d’appeler une Command via un Event. Il est conçu pour associer des commandes à des événements exposés par des contrôles qui n’ont pas été conçus pour prendre en charge des commandes. Il vous permet de mapper n’importe quel événement arbitraire sur un contrôle à une commande.

Important

Les comportements du kit d’outils de la communauté .NET MAUI ne définissent pas les BindingContext d’un comportement, car ceux-ci peuvent être partagés et appliqués à plusieurs contrôles par l’intermédiaire de styles. Pour plus d’informations, consultez Comportements MAUI .NET

Syntaxe

Les exemples suivants montrent comment ajouter EventToCommandBehavior à un contrôle Button, puis gérer l’évènement cliqué.

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>

Utiliser EventToCommandBehavior

Le EventToCommandBehavior 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="MyLittleApp.MainPage"
    x:Name="Page">
    
    <Button x:Name="MyButton">
        <Button.Behaviors>
            <toolkit:EventToCommandBehavior
                EventName="Clicked"
                BindingContext="{Binding Path=BindingContext, Source={x:Reference MyButton}, x:DataType=Button}"
                Command="{Binding Source={x:Reference Page}, Path=BindingContext.MyCustomCommand, x:DataType=ContentPage}" />
        </Button.Behaviors>
    </Button>
</ContentPage>

C#

Le EventToCommandBehavior peut être utilisé de la manière suivante dans 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;
    }
}

Balisage C#

Notre package CommunityToolkit.Maui.Markup offre un moyen beaucoup plus concis d’utiliser ce Behavior en C#.

using CommunityToolkit.Maui.Markup;

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

Accéder à EventArgs depuis l’évènement

Il est possible que l’EventArgs spécifique ait été transmis dans la Command. Il existe deux moyens de parvenir à cet objectif :

1. Utiliser l’implémentation générique

En utilisant l’implémentation EventToCommandBehavior<T>, EventArgs est transmis à la propriété Command si les propriétés CommandParameter et Converter ne sont pas définies. Pour faire référence au type générique dans XAML, nous devons utiliser la directive x:TypeArguments.

L’exemple suivant montre comment utiliser l’implémentation générique pour transmettre WebNavigatedEventArgs dans la commande.

<WebView 
    Source="https://github.com"
    x:Name="MyWebView">
    <WebView.Behaviors>
        <toolkit:EventToCommandBehavior
            x:TypeArguments="WebNavigatedEventArgs"
            EventName="Navigated"
            BindingContext="{Binding Path=BindingContext, Source={x:Reference MyWebView}, x:DataType=WebView}"
            Command="{Binding WebViewNavigatedCommand}" />
    </WebView.Behaviors>
</WebView>

2. Utiliser la propriété Converter

Lorsque vous utilisez ce behavior avec des évènements de sélection ou d’appui exposés par ListView, un convertisseur supplémentaire est nécessaire. Ce convertisseur convertit les arguments d’évènement en paramètre de commande, qui est ensuite transmis à la Command. Ils sont également disponibles dans le kit d’outils de la communauté .NET MAUI :

Propriétés

Propriété Type Description
EventName string Nom de l’évènement qui doit être associé à une Command.
Commande ICommand La Command qui doit être exécutée.
CommandParameter object Paramètre facultatif à transférer vers la Command.
EventArgsConverter IValueConverter IValueConverter facultatif qui peut être utilisé pour convertir des valeurs EventArgs en valeurs transmises dans la Command.

Exemples

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

API

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