选择项目时,xamarinForms ListView ItemTapped和ItemSelected同时运行

选择项目时,xamarinForms ListView ItemTapped和ItemSelected同时运行,listview,xamarin.forms,xamarin.forms.listview,Listview,Xamarin.forms,Xamarin.forms.listview,我有一个列表视图,其中包含两个事件ItemTapped和ItemSelected,当用户选择该项目时,您选择的项目应显示警报,当用户点击该项目时,您点击的项目应显示警报。 但是,当用户选择一个项目时,首先会显示您点击的项目的警报,然后会显示您所选项目的警报。为什么会发生这种情况 这是我的Xaml文件 当您点击一个项目时,会触发ItemTapped事件 ItemSelected事件在您选择项目时触发。点击当前未选择的项目时,您可以选择一个项目 在这种情况下,如果您正在点击未选中的项目,则Item

我有一个列表视图,其中包含两个事件ItemTapped和ItemSelected,当用户选择该项目时,您选择的项目应显示警报,当用户点击该项目时,您点击的项目应显示警报。 但是,当用户选择一个项目时,首先会显示您点击的项目的警报,然后会显示您所选项目的警报。为什么会发生这种情况

这是我的Xaml文件

当您点击一个项目时,会触发ItemTapped事件

ItemSelected事件在您选择项目时触发。点击当前未选择的项目时,您可以选择一个项目

在这种情况下,如果您正在点击未选中的项目,则ItemTapped和ItemSelected事件都将被激发。

点击项目时,ItemTapped事件将被激发

ItemSelected事件在您选择项目时触发。点击当前未选择的项目时,您可以选择一个项目


在这种情况下,如果您正在点击未选中的项目,则ItemTapped和ItemSelected事件都将被触发。

一种解决方法可以管理这两个事件,如, 您可以在双击列表项时调用Listview ItemTapped事件。 &默认情况下,Listview单次点击可获取ItemSelected事件


注意:这是同时管理两个事件的唯一解决方法。

一个解决方法可以管理两个事件,如, 您可以在双击列表项时调用Listview ItemTapped事件。 &默认情况下,Listview单次点击可获取ItemSelected事件


注意:这是同时管理这两个事件的唯一解决方法。

另一个简单的解决方法是计算触发触发的事件的次数。正如我所意识到的,抽头事件总是在所选事件之前触发,所以只需定义一个整数,在每个抽头事件中增加它,并在所选事件中重置

private int _myListTapNumber = 0;

...
private void MyList_ItemTapped(object sender, ItemTappedEventArgs e)
{
    if (_myListTapNumber > 1)
    {
        DisplayAlert("Tapped", "Tap event fired.", "OK");
    }
    _myListTapNumber++;
}

private void MyList_ItemSelected(object sender, SelectedItemChangedEventArgs e)
{
    _myListTapNumber = 1;

    DisplayAlert("Selected", "Selected event fired.", "OK");
}

另一个简单的解决方法是计算触发抽头事件的次数。正如我所意识到的,抽头事件总是在所选事件之前触发,所以只需定义一个整数,在每个抽头事件中增加它,并在所选事件中重置

private int _myListTapNumber = 0;

...
private void MyList_ItemTapped(object sender, ItemTappedEventArgs e)
{
    if (_myListTapNumber > 1)
    {
        DisplayAlert("Tapped", "Tap event fired.", "OK");
    }
    _myListTapNumber++;
}

private void MyList_ItemSelected(object sender, SelectedItemChangedEventArgs e)
{
    _myListTapNumber = 1;

    DisplayAlert("Selected", "Selected event fired.", "OK");
}

从哪个版本开始出现这种情况?从哪个版本开始出现这种情况?欢迎使用堆栈溢出。请注意,最好解释答案,而不是仅仅发布代码片段欢迎使用堆栈溢出。请注意,解释答案总是比张贴代码片段更好