В чем разница между событиями ItemTapped и ItemSelected в ListView в Xamarin.Формы?

#c# #xamarin #xamarin.forms

#c# #xamarin #xamarin.forms

Вопрос:

A ListView в Xamarin.Forms содержит два события, которые кажутся совершенно одинаковыми: ItemTapped и ItemSelected

На самом деле нет никакой документации об этом, так в чем же разница?

Ответ №1:

ItemSelected это состояние, а ItemTapped событие движения. Можно использовать все представления, и, если я правильно помню, все представления могут быть выбраны (или, по крайней мере, активированы, есть небольшая разница), они не обязательно должны сочетаться, но обычно это так.

Например, у вас будет выбранное состояние элемента, которое переключается каждый раз, когда происходит событие tapped motion . Еще раз, чтобы сделать его более понятным, вы можете связать изменения выбранного состояния с тем, что вам нужно, будь то событие движения, такое как нажатие, длительное нажатие или двойное нажатие и т. Д., Или с каким-либо другим событием или логикой.

Надеюсь, это поможет и удачи!

Комментарии:

1. Как вы можете реализовать длительное нажатие в представлении списка с помощью xamarin.forms?

Ответ №2:

ItemTapped должно происходить каждый раз, когда вы нажимаете на элемент, при ItemSelected каждом изменении выбранного элемента.

В основном

  • нажатие два раза на один и тот же элемент должно срабатывать два раза ItemTapped и только один раз ItemSelected
  • нажатие два раза на разные элементы должно срабатывать ItemTapped два раза и ItemSelected два раза

Комментарии:

1. Странно, ItemSelected запускается дважды в первом случае для меня.

2. Реализация может меняться, конечно, с разными версиями и платформами. Я также помню, что 1.x не всегда запускает ItemTapped для Windows Phone. Вы должны вызвать ошибку в bugzilla

Ответ №3:

ItemSelected происходит первым. ItemTapped происходит вторым.

Ответ №4:

Одно важное различие, которое стоит отметить, заключается в том, как они работают, когда SelectionMode="None"

 <ListView ... SelectionMode="None" />
 

Если установлено значение «Нет» … ItemSelect событие не будет запущено, и SelectedItem свойство останется null .

Но ItemTapped события будут продолжать запускаться, как и ожидалось.

Интерактивность ListView

Ответ №5:

Я думаю, что ItemSelected — это когда вы используете DataTemplate для своих элементов.