Al fin después de tanto trabajar ya encontramos la solución de esta dificultad que muchos lectores de este sitio web han presentado. Si tienes algún dato que aportar no dudes en compartir tu información.
Solución:
Me gustaría agregar a la respuesta de Jason porque falta información vital. Cuando establece la propiedad ListView SelectedItem en null, activará el evento ItemSelected nuevamente. Así que si no tienes un null check, lanzará una excepción.
Así es como debería verse:
void ItemSelected(object sender, EventArgs args)
if (((ListView)sender).SelectedItem == null)
return;
//Do stuff here with the SelectedItem ...
((ListView)sender).SelectedItem = null;
Está asignando el controlador ItemSelected dos veces, lo cual es una mala idea. Todo lo que debe hacer es agregar esta línea a su controlador ItemSelected existente
((ListView)sender).SelectedItem = null;
Tuve este mismo problema pero las otras soluciones no me funcionaron. Como necesitaba pasar un objeto personalizado a la página siguiente, anulé la referencia del elemento seleccionado y usé la referencia del elemento tocado para mi objeto personalizado.
listView.ItemTapped += async (sender, e) =>
await Navigation.PushAsync(new DetailPage(e.Item as CustomObject));
((ListView)sender).SelectedItem = null;
;
Si haces scroll puedes encontrar las observaciones de otros administradores, tú incluso eres capaz dejar el tuyo si te gusta.