我在列表视图上使用MR.Gestures进行长按事件。我可以触发长按事件,但不能让listview选择长按项。
<mr:ListView x:Name="listView"
ItemsSource="{Binding downloadedLessonsData}"
LongPressedCommand="{Binding LongPressedCommand}"
LongPressingCommandParameter="{Binding SelectedItem}"
> 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表单。提前谢谢。
发布于 2017-05-05 14:28:24
选定项目MR.Gestures.ListView list=(MR.Gestures.ListView) (e.Sender);的强制转换
是错误的。如果每个选定的项都是一个集合,则必须将其强制转换为model。
protected virtual void OnLongPressed(LongPressEventArgs e) { var selectedItem=(Model name be be given)e.Sender; ' //now you will get the selected model in selectedItem' }
如果每个选定的项都是单个值(例如: string),则必须将其转换为数据类型。
protected virtual void OnLongPressed(LongPressEventArgs e) { var selectedItem=(string)e.Sender; ' //now you will get the selected string in selectedItem' }
发布于 2017-05-05 14:17:08
相反,请尝试https://github.com/pateljay0323/XamarinFormsGestures
查找SingleTap、DoubleTap、LongPress、Swipe、Pinch、Move、Up、Down等。
这也会节省你的许可费。
发布于 2017-05-05 18:23:37
您可以使用listView.SelectedItem (因为当您触摸单元格时将设置所选项目),也可以在每个Cell上处理LongPress。然后在sender中获得按下的Cell。
在您的代码中,OnLongPressed方法的签名是错误的,但是如果它被执行,那么这只是一个复制粘贴错误。
https://stackoverflow.com/questions/43797514
复制相似问题