我已将数据源绑定到longlistselector并且它完美运行。我从一个相当大的嵌套json对象中检索数据,它可以工作。然而,当我尝试通过一个名为“城市”的属性过滤项目时,会发生一些奇怪的事情。在我的ViewModel中,我做了这个简单的检查:
private ObservableCollection<GigViewModel> _gigs;
public ObservableCollection<GigViewModel> Gigs
{
get
{
for (int i = 0; i < _gigs.Count; i++)
{
if (_gigs[i].City == "venlo")
{
_gigs.Remove(_gigs[i]);
}
}
return _gigs;
}
private set
{
if (value != _gigs)
{
_gigs = value;
}
}
}
所以当城市字符串等于'Venlo'时,我希望它被删除。城市字符串可以是两件事之一,它可以是“Sittard”或“Venlo”。当我用单词'Sittard'过滤列表时,输出是正确的,它只显示来自Venlo的项目(这是列表的一个较大部分),但是当我按'Venlo'过滤时,列表仍然包含一些项目城市字符串为'Venlo'。
当我尝试调试时,等待的时间越长,列表被过滤的时间就越多,过了一段时间后,列表被完全过滤并且正确无误。但是当我在没有断点的情况下运行它时,列表不会被正确过滤。对这种奇怪行为的任何解释?
答案 0 :(得分:1)
您可能遇到问题,因为您正在使用_gigs.Count
作为循环上限的循环中从列表中删除项目。我不确定每次执行循环时是否重新评估此值,但如果没有,那么它可能会给你带来奇怪的行为。