Я привязал источник данных к 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;
}
}
}
Так, когда город строка приравнивает «Венло» Я хочу его удалить. Строка города может быть одной из двух вещей, это либо «Ситтард», либо «Венло». Когда я фильтрую список по слову «Sittard», вывод правильный, и он отображает только объекты из Venlo (это большая часть списка), но когда я фильтрую «Venlo», список по-прежнему содержит несколько элементов, которые имеют городская строка как «Венло».
Когда я пытаюсь отлаживать, чем дольше я жду, тем больше список фильтруется, а через некоторое время список полностью фильтруется и исправляется. Но когда я запускаю его без точки останова, список не фильтруется должным образом. Любое объяснение этого странного поведения?
Я думаю, вы запутываете C# с Java. В Java это необходимо, но оператор == работает для строк в C#. Во всяком случае, я все же пробовал, и фильтрация по-прежнему не работает. –
Да, хороший звонок. Я довольно новичок в C#, поэтому я с глупостью предположил, что это то же самое. Я вижу, что ты прав. Теперь я изменил ответ с альтернативным объяснением вашей проблемы. – Choc13
Конечно! Я должен был это видеть. Благодаря! –