I finally got it using ItemSelected. Here is my code that works,
The View
<ListView x:Name="AutoView" ItemsSource="{Binding AutoData}" ItemSelected="Selected" Grid.Row="1" Grid.ColumnSpan="6" BackgroundColor="Purple">
View Code Behind
void Selected(object sender, SelectedItemChangedEventArgs e)
{
if (Convert.ToBoolean(Application.Current.Properties["FirstSelected"]))
{
Application.Current.Properties["FirstSelected"] = false;
//Analytics.TrackEvent("UpdateCar.xaml.cs - Select top");
var ucvm = new UpdateCarsViewModel((AutoWithSwitch)e.SelectedItem);
//Analytics.TrackEvent("UpdateCar.xaml.cs - Select top2" + (AutoWithSwitch)e.SelectedItem);
if (e.SelectedItem == null)
{
return;
}
AutoView.SelectedItem = null;
}
}
The View Model
public UpdateCarsViewModel(AutoWithSwitch data)
{
StackTrace stackTrace = new StackTrace();
// Get calling method name
var methodName = stackTrace.GetFrame(1).GetMethod().Name;
Analytics.TrackEvent("In UpdateCarsViewModel MethodName = " + methodName);
if (methodName == "Selected")
{
DisplayAlerts(data);
}
}
public async void DisplayAlerts(AutoWithSwitch value)
{
var answer = await (App.Current as App).MainPage.DisplayAlert("Action", "Delete", "Ok", "Cancel");
if (answer)
DeleteCar(value);
else
Application.Current.Properties["FirstSelected"] = true;
}
Thank you to all for your help