我有两个自定义的listView,如ListView A和ListViewB。在ListView A上包含项目列表,当我单击ListView A中的项目时,它将在特定项目/数据上突出显示(即选中和取消选中)。 ListView B它工作正常。但是,当我取消选中ListView A中的项目并尝试以类似方式尝试从ListView B中删除该项目时,则无法正常工作。
从带有复选框的自定义ListView中删除项目时,不从ListView中删除项目。但我可以添加该项目,但无法删除。
在特定条件下,我试图在列表中添加或删除项目的ListView控件的onitemtap事件。
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
我不能从列表视图中列出项目。
答案 0 :(得分:2)
尽管我不确定我是否正确理解了您的问题,但我想我已经找到了问题。
您正在尝试在此处删除新对象
ListItems.Remove(new ListViewModel { Text = item.IDDescription + " (" + item.IDCodes + ")", ID = item.IDCodeID };
比较是通过引用进行的,最后没有删除任何内容。
您应该这样做
ListItems.Remove(ListItems.FirstOrDefault(i => i.ID == item.IDCodeID))
假设IDCodeID是对象的唯一标识符,否则,您可能应该考虑采用其他方法来获取对要删除的对象的引用