Пользовательский ListView не может удалить элемент из списка - PullRequest
0 голосов
/ 29 июня 2018

У меня есть два пользовательских listView, таких как ListView A и ListView B. В ListView A содержится список элементов, когда я щелкаю элемент в ListView A, он будет выделен (т. Е. Установите или снимите флажок) на конкретном элементе / данные заполняются в ListView B работает нормально. Но когда я убираю элемент из ListView A и аналогичным образом пытаюсь удалить этот элемент из ListView B, он не работает.

При удалении элемента из пользовательский ListView с флажком не удаляет элемент из ListView. но я могу добавить этот элемент, но не могу удалить.

Событие onitemtap элемента управления ListView в конкретном состоянии. Я пытаюсь добавить или удалить элемент из списка.

public class TestIds
 {
   ObservableCollection<ListViewModel> ListItems { get; set; } = new ObservableCollection<ListViewModel>()
     {
     };

  private void ListView_ItemTappedEventArgs(ItemTappedEventArgs itemTapped)
    {
       items = itemTapped.Item as ListViewModel;
       if (items.IsSelected)
          {
            items.IsSelected = false;
            BindRemoveItem(items.ID, items.IsSelected);
           }
           else
            {
             items.IsSelected = true;
             BindRemoveItem(items.ID, items.IsSelected);
             }
     }

    //this is my code for binding and removing data from listView

  private void BindRemoveItem(string id, bool isChecked)
    {
      IDManager.GetIDList(list =>
        {
         foreach (IDEntities item in list)
          {
           if (isChecked == true)
            {
             ListItems.Add(new ListViewModel { Text = item.IDDescription + " (" + item.IDCodes + ")", ID = item.IDCodeID });
             }
             else
             {
               ListItems.Remove(new ListViewModel { Text = item.IDDescription + " (" + item.IDCodes + ")", ID = item.IDCodeID };
              }
            }
        CustomControlClass.ListView.ItemsSource = ListItems;
        }, id);
     }                  
}

Здесь ListItems.Remove Я не могу выбрать элемент из списка.

1 Ответ

0 голосов
/ 29 июня 2018

Мне кажется, я нашел проблему, хотя не уверен, правильно ли я понял ваш вопрос.

Вы пытаетесь удалить новый объект здесь

ListItems.Remove(new ListViewModel { Text = item.IDDescription + " (" + item.IDCodes + ")", ID = item.IDCodeID };

Сравнение выполняется по ссылке, и в конце ничего не удаляется.

Вместо этого ты должен

ListItems.Remove(ListItems.FirstOrDefault(i => i.ID == item.IDCodeID))

Предполагается, что IDCodeID является уникальным идентификатором вашего объекта, если нет, то вам, вероятно, следует подумать о каком-либо другом способе получения ссылки на объект, который вы хотите удалить

...