Как найти долго нажатый выбранный элемент из списка для события длинного нажатия, используя MR.Gestures в форме Xamarin

Я использую MR.Gestures для длинного события нажатия на вид списка. Я могу вызвать событие длительного нажатия, но не могу получить просмотр списка, выбранный элемент длительного нажатия.

 <mr:ListView  x:Name="listView"
    ItemsSource="{Binding downloadedLessonsData}"
    LongPressedCommand="{Binding LongPressedCommand}"
    LongPressingCommandParameter="{Binding SelectedItem}"
    >

В коде модели представления метод OnLongPressed запускается при длительном нажатии элемента списка:

  protected virtual void OnLongPressed(LongPressEventArgs e)
    {
     MR.Gestures.ListView list=   (MR.Gestures.ListView) (e.Sender);
     //list.LongPressedCommandParameter; LongPressedCommandParameter is 
     //comming null, unable to get selectedItem
     Debug.WriteLine("OnLongPress");
     }

Но я не могу получить выделенный долго нажатый элемент в методе OnLongPressed. Подскажите, пожалуйста, как получить выделенный элемент длинного нажатия в методе OnLongPressed. Я новичок в формах ксамарин. Заранее спасибо.

3 ответа

Ваш кастинг для выбранного предмета MR.Gestures.ListView list=(MR.Gestures.ListView) (e.Sender);

неправильно. Вы должны привести его к модели, если каждый выбранный предмет является коллекцией.

protected virtual void OnLongPressed(LongPressEventArgs e) { var selectedItem=(Model name be be given)e.Sender; ' //now you will get the selected model in selectedItem' }

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

protected virtual void OnLongPressed(LongPressEventArgs e) { var selectedItem=(string)e.Sender; ' //now you will get the selected string in selectedItem' }

Вместо этого попробуйте https://github.com/pateljay0323/XamarinFormsGestures

найти SingleTap, DoubleTap, LongPress, Swipe, Pinch, Move, Up, Down и т. д.

а также это сэкономит ваши лицензионные сборы

Вы можете использовать listView.SelectedItem (так как выбранный пункт будет установлен при прикосновении к ячейке) или вы обрабатываете LongPress на каждой Cell, Тогда вы получите пресс Cell в sender,

В вашем коде подпись OnLongPressed метод неправильный, но если он выполняется, то это просто ошибка копирования и вставки.

Другие вопросы по тегам