【问题标题】:How to find long pressed selected item from list view for long press event using MR.Gestures in Xamarin form如何使用 Xamarin 表单中的 MR.Gestures 从列表视图中查找长按事件的长按选定项目
【发布时间】:2017-05-05 05:57:37
【问题描述】:

我正在使用 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 形式的新手。 提前致谢。

【问题讨论】:

    标签: xamarin.forms mr.gestures


    【解决方案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' }

    【讨论】:

    【解决方案2】:

    试试https://github.com/pateljay0323/XamarinFormsGestures

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

    这也将节省您的许可费用

    【讨论】:

    • 这不能回答 OP 的问题。此外,在自我推销之前,您可能需要查看this post
    • 我不这么认为这是自我推销的答案。由于问题与 kittu 有关,因此很难找到长期按下的列表项,我试图建议一些替代方案是自我推销?完全相同的 kittu 期望工作。而且它也不需要许可证。
    • 我对您的回答投了反对票,因为问题是如何使用OnLongPressed 方法在MR.Gestures 中选择长按列表项,而您的回答并未说明如何做到这一点。您应该已经解释了如何实现这一目标(或者为什么不可能,如果是这样的话)。另一方面,如果您建议替代解决方案(例如使用另一个库),这也是可以接受的,您应该包含一个 sn-p 代码或至少引用文档中的相关部分(而不仅仅是发布一个链接)。
    • 另外,我并不反对有人推广他们的图书馆,相反,如果它解决了某人的问题,那就去吧,感谢你创造它! :) 但是仅仅发布一个链接并不是一个可行的方法,您可以找到here 一些关于此的提示以及一般的好答案。
    【解决方案3】:

    您可以使用listView.SelectedItem(因为当您触摸一个单元格时将设置所选项目)或者您在每个Cell 上处理LongPress。然后你会在sender 中得到按下的Cell

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

    【讨论】:

    • 我可以执行 OnLongPressed。您能否建议我如何将 listView.SelectedItem 与 mr.listview 一起使用,以便我可以在 onLongPress 方法中获取项目。我对 xamarin 形式很陌生。请建议谢谢。
    • 您在 xaml 中编写了 developer.xamarin.com/api/property/…。 SelectedItem 包含您要求的选定项目。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-10
    • 2011-11-29
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    相关资源
    最近更新 更多