Freigeben über


EventToCommandBehavior

EventToCommandBehavior ist ein behavior, mit dem Benutzer*innen Command über Event aufrufen können. Es wurde entwickelt, um Befehle Ereignissen zuzuordnen, die von Steuerelementen verfügbar gemacht wurden, die nicht für die Unterstützung von Befehlen konzipiert wurden. Dadurch können Sie beliebige Ereignisse in einem Steuerelement einem Befehl zuordnen.

Wichtig

.NET MAUI Community Toolkit Behaviors legt den BindingContext eines Verhaltens nicht fest, da Verhalten über Stile freigegeben und auf mehrere Steuerelemente angewendet werden können. Weitere Informationen finden Sie unter .NET MAUI Behaviors.

Syntax

Die folgenden Beispiele zeigen, wie Sie einem Button-Steuerelement eine EventToCommandBehavior hinzufügen und dann das angeklickte Ereignis behandeln.

XAML

Einbinden des XAML-Namespace

Um das Toolkit in XAML verwenden zu können, muss der folgende xmlns-Abschnitt zu Ihrer Seite oder Ansicht hinzugefügt werden:

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

Der folgende Abschnitt:

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

Würde dann geändert werden, um xmlns einzubinden:

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

Verwenden des EventToCommandBehavior

EventToCommandBehavior kann wie folgt in XAML verwendet werden:

<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 kann wie folgt in C# verwendet werden:

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

Das Paket CommunityToolkit.Maui.Markup bietet eine viel präzisere Möglichkeit, dieses Behavior in C# zu verwenden.

using CommunityToolkit.Maui.Markup;

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

Zugreifen auf EventArgs aus dem Ereignis

Es ist möglich, die EventArgs des spezifischen Ereignisses an die Command zu übergeben. Es gibt zwei Möglichkeiten, dies zu erreichen:

1. Verwenden der generischen Implementierung

Bei Verwendung der EventToCommandBehavior<T>-Implementierung wird die EventArgs an die Command-Eigenschaft übergeben, wenn sowohl die Eigenschaften CommandParameter als auch Converter nicht festgelegt sind. Um auf den generischen Typ in XAML zu verweisen, müssen wir die x:TypeArguments-Anweisung verwenden.

Das folgende Beispiel zeigt, wie Sie die generische Implementierung verwenden, um die WebNavigatedEventArgs an den Befehl zu übergeben.

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

2. Verwenden der Converter-Eigenschaft

Wenn Sie diese behavior mit Auswahl- oder Tippereignissen verwenden, die von ListView verfügbar gemacht werden, ist ein zusätzlicher Konverter erforderlich. Dieser Konverter konvertiert die Ereignisargumente in einen Befehlsparameter, der dann an die Command übergeben wird. Sie sind auch im .NET MAUI Community Toolkit verfügbar:

Eigenschaften

Eigenschaft Typ Beschreibung
EventName Zeichenfolge Der Name des Ereignisses, das einem Command zugeordnet werden soll.
Get-Help ICommand Die Command, die ausgeführt werden soll.
CommandParameter Objekt Ein optionaler Parameter, der an die Command weitergeleitet werden soll.
EventArgsConverter IValueConverter Eine optionale IValueConverter, mit der EventArgs-Werte in Werte konvertiert werden können, die in die Command übergeben werden.

Beispiele

Sie finden ein Beispiel für dieses Verhalten in Aktion in der Beispielanwendung für das .NET MAUI Community Toolkit.

API

Sie finden den Quellcode für EventToCommandBehavior über das GitHub-Repository für das .NET MAUI Community Toolkit.