EventToCommandBehavior
EventToCommandBehavior
es un behavior
que permite al usuario invocar a Command
a través de un Event
. Está diseñado para asociar comandos a eventos expuestos por controles que no se diseñaron para admitir comandos. Permite asignar cualquier evento arbitrario en un control a un comando.
Importante
Los comportamientos del kit de herramientas de la comunidad de .NET MAUI no establecen el BindingContext
de un comportamiento, ya que los comportamientos se pueden compartir y aplicar a varios controles a través de estilos. Para obtener más información, consulte Comportamientos de .NET MAUI
Sintaxis
En los ejemplos siguientes se muestra cómo agregar un comportamiento EventToCommandBehavior
a un control Button
para controlar el evento en el que se hace clic.
XAML
Incluir el espacio de nombres XAML
Para usar el kit de herramientas en XAML, es necesario agregar el siguiente xmlns
a la página o vista:
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
Por lo tanto, el siguiente:
<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>
Se modificaría para incluir el xmlns
de la siguiente manera:
<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 de EventToCommandBehavior
El EventToCommandBehavior
se puede usar de la siguiente manera en 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#
El EventToCommandBehavior
se puede usar de la siguiente manera en 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;
}
}
Marcado de C#
Nuestro paquete CommunityToolkit.Maui.Markup
proporciona una forma mucho más concisa de usar este 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()
});
}
}
Acceso a EventArgs desde el evento
Es posible pasar el objeto EventArgs
del evento específico a Command
. Hay dos formas de lograrlo:
1. Uso de la implementación genérica
Al usar la implementación de EventToCommandBehavior<T>
, el objeto EventArgs
se pasará a la propiedad Command
si no se establecen las propiedades CommandParameter
y Converter
. Para hacer referencia al tipo genérico en XAML, es necesario usar la directiva x:TypeArguments
.
En el ejemplo siguiente se muestra cómo usar la implementación genérica para pasar WebNavigatedEventArgs
al comando.
<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. Uso de la propiedad Converter
Al usar este comportamiento (behavior
) con eventos de selección o pulsación expuestos por ListView
, se requiere un convertidor adicional. Este convertidor convierte los argumentos de evento en un parámetro de comando que, posteriormente, se pasa al comando (Command
). También están disponibles en el kit de herramientas de la comunidad de .NET MAUI:
Propiedades
Propiedad | Tipo | Descripción |
---|---|---|
EventName | string | El nombre del evento que se debe asociar a un elemento Command . |
Get-Help | ICommand | El elemento Command que se debe ejecutar. |
CommandParameter | object | Un parámetro opcional para reenviar al elemento Command . |
EventArgsConverter | IValueConverter | Un elemento IValueConverter opcional que se puede usar para convertir los valores de EventArgs en valores pasados al comando (Command ). |
Ejemplos
Puede encontrar un ejemplo de este comportamiento en acción en la Aplicación de muestra del kit de herramientas de la comunidad de .NET MAUI.
API
Puede encontrar el código fuente de EventToCommandBehavior
en el repositorio de GitHub del Kit de herramientas de la comunidad de .NET MAUI.
.NET MAUI Community Toolkit