0

我在列表视图上使用 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 方法中获取选定的长按列表项。我是 xamarin 形式的新手。提前致谢。

4

3 回答 3

1

您对所选项目的选角 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' }

于 2017-05-05T06:28:23.963 回答
0

而是尝试https://github.com/pateljay0323/XamarinFormsGestures

查找 SingleTap、DoubleTap、LongPress、Swipe、Pinch、Move、Up、Down 等。

这也将节省您的许可费用

于 2017-05-05T06:17:08.287 回答
0

您可以使用listView.SelectedItem(因为当您触摸单元格时将设置所选项目)或处理LongPress每个Cell. 然后你Cellsender.

在您的代码中,该方法的签名OnLongPressed是错误的,但如果它被执行,那么这只是一个复制和粘贴错误。

于 2017-05-05T10:23:36.937 回答