Xamarin.Forms是否支持点按并保持手势?

时间:2016-01-22 07:36:57

标签: android ios visual-studio-2013 windows-phone xamarin.forms

我是Xamarin.forms的新用户,我的客户想要一个像Gmail这样的功能,用户可以点按其中一个列表项并获得多选项目的选项。

该应用程序将有一个项目列表,提供不同的选项,如删除,查看,上传等。所以基本上它有5个选项,根据Windows移动限制,该应用程序不能有超过4个菜单选项(ToolbarItem)。因此需要点击并按住手势。用户点击并按住其中一个项目后,ToolbarItem sholud将更改并仅替换为删除选项。通过这样做,我们可以将ToolbarItem减少到四个。

任何参考都会有很大的帮助!! : - )

还想知道是否可以点按并保持不同平台(iOS,windows,android)如何呈现它?它是由Xamarin.forms处理还是代码中有些东西需要为不同的OS平台处理?

2 个答案:

答案 0 :(得分:1)

您是否考虑过使用Context Options而不是替换工具栏中的选项?

如果您可以使用上下文选项而不是工具栏,则不需要第三方组件,因为Xamarin.Forms允许您轻松地为每个listView项定义此类选项:

要实现ListView

var listView = new ListView();
listView.ItemTemplate = new DataTemplate(typeof(MyListItemCell));

数据模板应如下所示:

public class MyListItemCell : ViewCell
{
    // To register the LongTap/Tap-and-hold gestures once the item model has been assigned
    protected override void OnBindingContextChanged()
    {
        base.OnBindingContextChanged();
        RegisterGestures();
    }

    private void RegisterGestures()
    {
        var deleteOption = new MenuItem()
        {
            Text = "Delete",
            Icon = "deleteIcon.png", //Android uses this, for example
            CommandParameter = ((ListItemModel) BindingContext).Id
        };
        deleteOption.Clicked += deleteOption_Clicked;
        ContextActions.Add(deleteOption);

        //Repeat for the other 4 options

    }
    void deleteOption_Clicked(object sender, EventArgs e)
    {
         //To retrieve the parameters (if is more than one, you should use an object, which could be the same ItemModel 
        int idToDelete = (int)((MenuItem)sender).CommandParameter; 
        //your delete actions
    }
    //Write the eventHandlers for the other 4 options
}

答案 1 :(得分:0)

不幸的是,默认情况下该事件并非如此。但是有一个便宜的第三方组件可以为您处理:http://www.mrgestures.com/#events使用LongPressing或LongPressed。

或者您可以选择在每个平台上本地实现它。