Nano Hash - криптовалюты, майнинг, программирование

xamarinForms ListView ItemTapped и ItemSelected работают вместе при выборе элемента

У меня есть ListView с двумя событиями «ItemTapped» и «ItemSelected», когда пользователь выбирает элемент, должно появиться предупреждение «Вы выбрали элемент», а когда пользователь коснулся элемента, должно появиться предупреждение «Вы нажали элемент». но что произошло, так это то, что когда пользователь выбирает элемент, сначала появляется предупреждение «Вы нажали элемент», а затем появляется предупреждение «Вы выбрали элемент», почему это произошло ???

это мой файл XAML

 <ListView x:Name="listView" 
              ItemTapped="Tapped"
              ItemSelected="Select">
        <ListView.ItemTemplate>
            <DataTemplate>
                <TextCell Text="{Binding Name}" Detail="{Binding Status}"/>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

код позади

 void Select(object sender, Xamarin.Forms.SelectedItemChangedEventArgs e)
    {
        var contact = e.SelectedItem as Contact;
        DisplayAlert("selected", "You selected item", "Ok");

        // listView.SelectedItem = null;
    }


    void Tapped(object sender, Xamarin.Forms.ItemTappedEventArgs e)
    {
        var contact = e.Item as Contact;
        DisplayAlert("tapped", "You tapped item", "Ok");
    }

Ответы:


1

Один обходной путь возможен для управления обоими событиями, например, вы можете вызвать событие Listview ItemTapped при двойном нажатии на элемент списка. & По умолчанию Listview Single Tap может получить событие ItemSelected.

Примечание. Это всего лишь временное решение для управления обоими одновременно.

05.04.2018

2

Событие ItemTapped запускается, когда вы нажали элемент.

Событие ItemSelected запускается, когда вы выбрали элемент. Вы выбираете элемент, когда нажимаете на элемент, который в данный момент не выбран.

В этом случае, если вы нажмете на элемент, который не выбран, будут запущены события ItemTapped и ItemSelected.

01.04.2018
  • С какой версии это так? 15.10.2019

  • 3

    Другим простым обходным решением может быть подсчет количества запусков события Tapped. Как я понял, событие Tapped всегда срабатывает перед событием Selected, поэтому просто определите целое число, увеличьте его в каждом событии Tapped и сбросьте в событии Selected.

    private int _myListTapNumber = 0;
    
    ...
    private void MyList_ItemTapped(object sender, ItemTappedEventArgs e)
    {
        if (_myListTapNumber > 1)
        {
            DisplayAlert("Tapped", "Tap event fired.", "OK");
        }
        _myListTapNumber++;
    }
    
    private void MyList_ItemSelected(object sender, SelectedItemChangedEventArgs e)
    {
        _myListTapNumber = 1;
    
        DisplayAlert("Selected", "Selected event fired.", "OK");
    }
    
    08.06.2018

    4
  • Добро пожаловать в Stack Overflow. Обратите внимание, что всегда лучше объяснить ответ, а не просто публиковать фрагмент кода 03.02.2021
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..