我有一个程序,里面有一个名为MyClass
和Location
的类。 MyClass
包含Location
项的ObservableCollection
,Location
包含一个名为 Name
的字符串属性。MainPage.xaml
我有一个LongListSelector
(每个项目都有一个ContextMenu
),填充了代表Location
的网格。
当我从上下文控件中单击"删除"菜单项时,它通常会删除基础Location
对象并更新视图。在填充LongListSelector
并删除其所有项目的几个周期后,无法再删除添加的一些新项目。
以下是我的意思的一个例子:LLS 最初包含 2 个项目。然后我删除了这 2 个项目并添加了 3 个。但是,在这种情况下,我只能删除第三个,但不能删除前两个。
以下是来自MainPage.xaml.cs
的ContextMenu
MenuItem
点击事件:
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;
}
}
}
在使用for
循环之前,我使用了这个 LINQ 代码,但仍然遇到同样的问题:
var toRemove = MyClass.Locations.Where(x => x.Name == selectedItem.Name).SingleOrDefault();
MyClass.Locations.Remove(toRemove);
有什么建议可以解决这个问题吗?
我建议您使用ListBox而不是LLS - 如果您不使用分组选项。它的效果要好得多,造成的问题也更少。
顺便说一下,我也遇到了这个控件的一些问题 - 可能与您的控件相似。
奇怪的是,LLS。UpdateLayout() 在 ListBox 中无法正常工作。