У меня длинный список слов. Я проверяю, сколько раз слово встречается, затем добавляю его в ObservableCollection. Так как это длинный список и итерация занимает довольно много времени, я хотел бы иметь возможностьотображать слово после каждой итерации и переходить к следующей.В настоящее время слова будут отображаться все вместе после завершения итерации всей коллекции.
При отладке я заметил, что список (wordBox) обновился, когда я добавил значение в oWords, но значение не отображалось.
Exercise4_btn.Click += async (object sender, RoutedEventArgs e) =>
{
oWords = new ObservableCollection<Word>();
List<string> words = await GetWordsFromFile();
wordBox.DataContext = oWords;
wordBox.SetBinding(ListBox.ItemsSourceProperty, new Binding());
foreach (var word in words)
{
await Task.Run(() =>
{
int count = words.Where(w => w.Equals(word)).Count();
try
{
oWords.Add(new Word {Value = word, Count = count});
}
catch { }
});
}
};
Вот так выглядит список в xaml
<ListBox Name="wordBox" HorizontalAlignment="Left" Height="612" Margin="460,53,0,0" VerticalAlignment="Top" Width="278"/>
И этот класс используется ObservableCollection
public class Word
{
public string Value { get; set; }
public int Count { get; set; }
public override string ToString()
{
return ($"{Value}\t{Count}");
}
}