I have a program with a class called MyClass
and Location
. MyClass
contains an ObservableCollection
of Location
items and Location
contains a string property called Name
. In MainPage.xaml
I have a LongListSelector
(with a ContextMenu
for each item) populated with grids representing a Location
.
When I click the 'remove' menu item from the context control, it will usually remove the underlying Location
object and update the view. After a few cycles of populating the LongListSelector
and removing all its items, some new items that are added can't be removed anymore.
Here's an example of what I mean: The LLS originally contains 2 items. Then I delete those 2 items and add 3 more. However, I can only remove the third one, in this case, but not the first 2.
Here's the ContextMenu
MenuItem
click event from MainPage.xaml.cs
:
private void MenuItem_Click(object sender, RoutedEventArgs e)
{
var selectedItem = (sender as MenuItem).DataContext as Location;
for (int i = 0; i < MyClass.Locations.Count; i++)
{
if (MyClass.Locations[i].Name == selectedItem.Name)
{
MyClass.Locations.Remove(MyClass.Locations[i]);
break;
}
}
}
Prior to using a for
loop, I used this LINQ code and still had the same problem:
var toRemove = MyClass.Locations.Where(x => x.Name == selectedItem.Name).SingleOrDefault();
MyClass.Locations.Remove(toRemove);
Any suggestions to fix this problem?