无法选择列表查看项目两次

时间:2017-09-01 15:28:41

标签: c# xaml xamarin mvvm xamarin.forms

我遇到连续两次选择列表视图项的问题。所以当我选择一个项目时,它会加载另一个列表。这不是问题,但当我单击返回以返回上一个列表视图时,我无法再单击相同的列表视图项。 我做了一些阅读,似乎有一个想法是在代码中的某个点“取消选择”列表视图项,以便能够再次选择相同的项目。 选择是使用MVVM模型完成的,因此处理选择的代码等。

$("#notify > tbody > tr[data-notify='101']")

OpenRoutePage方法只是打开下一个列表视图,正如我所说,这样可以正常工作。 我附上了一些图片来更好地说明问题。

enter image description here

enter image description here

enter image description here

任何帮助将不胜感激,原谅艺术品。

2 个答案:

答案 0 :(得分:4)

在ItemSelected事件处理程序中

,您需要设置SelectedItem = null

protected void ItemSelected(object source, ItemSelectedEventArgs args) {

  // do whatever actions on selected item here

  // then reset SelectedItem
  ((ListView)source).SelectedItem = null;
}

答案 1 :(得分:1)

您可以创建不同的事件处理程序来解决问题,即ItemTapped和ItemSelected事件处理程序。单击/点击后首先触发ItemSelected事件,然后触发ItemTapped事件。首次点击/单击列表视图项时,触发ItemSelected事件后触发ItemTapped事件两次。要解决此问题,您可以附加两个事件处理程序,只需设置/清除布尔属性。

示例:

private bool _isSelected;

private void ListView_ItemSelected(object sender, SelectedItemChangedEventArgs e)
{
   _isSelected = true;
}

private void ListView_ItemTapped(object sender, ItemTappedEventArgs e)
{
   if(!_isSelected)
   {
      //do work here
   }
   _isSelected = false;
}

这里,首先触发ItemSelected事件并设置变量_isSelected。然后触发ItemTapped事件两次。 ItemTapped事件中的条件阻止用户代码在第一次调用中执行,然后允许在第二次调用中执行代码。