Using the EventToCommandBehavior
The EventToCommandBehavior class provides a convenient way to, in XAML, "bind" events to ICommand according to MVVM paradigm to avoid code behind.
Properties
The EventToCommandBehavior expose the following properties
- EventName The name of the event to listen to. For example ItemTapped
- Command The ICommandthat will be executed when the event is raised
- CommandParameter The parameter that will be sent to the ICommand.Execute(object)method
- EventArgsConverter Instance of IValueConverterthat allows operating on theEventArgstype for the EventName
- EventArgsConverterParameter The parameter that will be sent as the parameter argument to IValueConverter.Convertmethod
- EventArgsParameterPath Parameter path to extract property from EventArgsthat will be passed toICommand.Execute(object)
Usage
First declare the namespace and assembly in where EventToCommandBehavior is declared and declare a XML-namespace.
xmlns:prism="http://prismlibrary.com"
CommandParameter
Bind or declare a parameter that will be sent to the ICommand.Execute(object) method.
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MyNamespace.ContentPage"
             xmlns:prism="http://prismlibrary.com">
    <ListView>
        <ListView.Behaviors>
            <prism:EventToCommandBehavior EventName="ItemTapped"
                                          Command="{Binding ItemTappedCommand}"
                                          CommandParameter="MyParameter" />
        </ListView.Behaviors>
    </ListView>
</ContentPage>
EventArgsConverter
Using the EventArgsConverter to retrieve the ItemTappedEventArgs.Item property.
using System;
using System.Globalization;
using Xamarin.Forms;
namespace Prism.Converters
{
    public class ItemTappedEventArgsConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            var itemTappedEventArgs = value as ItemTappedEventArgs;
            if (itemTappedEventArgs == null)
            {
                throw new ArgumentException("Expected value to be of type ItemTappedEventArgs", nameof(value));
            }
            return itemTappedEventArgs.Item;
        }
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
}
The XAML need a reference to the converter and the converter resource need to be defined
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MyNamespace.ContentPage"
             xmlns:prism="http://prismlibrary.com"
             xmlns:c="clr-namespace:AwesomeApp.Converters;assembly=YourProject">
    <ContentPage.Resources>
        <ResourceDictionary>
            <c:ItemTappedEventArgsConverter x:Key="itemTappedEventArgsConverter" />
        </ResourceDictionary>
    </ContentPage.Resources>
    <ListView>
        <ListView.Behaviors>
            <prism:EventToCommandBehavior EventName="ItemTapped"
                                          Command="{Binding ItemTappedCommand}"
                                          EventArgsConverter="{StaticResource itemTappedEventArgsConverter}" />
        </ListView.Behaviors>
    </ListView>
</ContentPage>
EventArgsParameterPath
Attach the command to ItemTapped event will raise the ItemTappedEventArgs event.
public class ItemTappedEventArgs : EventArgs
{
    public object Item { get; }
    public object Group { get; }
}
Setting EventArgsParameterPath to Item will extract the property value and pass it to the ICommand.Execute(object) method
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MyNamespace.ContentPage"
             xmlns:prism="http://prismlibrary.com">
    <ListView>
        <ListView.Behaviors>
            <prism:EventToCommandBehavior EventName="ItemTapped"
                                          Command="{Binding ItemTappedCommand}"
                                          EventArgsParameterPath="Item" />
        </ListView.Behaviors>
    </ListView>
</ContentPage>