Когда я связываю ListBox непосредственно с ObservableCollection, я получаю обновления в реальном времени, отображаемые в моем ListBox, но как только я добавляю другие методы LINQ в смесь, мой ListBox больше не уведомляется о каких-либо изменениях в ObservableCollection.
Здесь позвольте мне проиллюстрировать пример;
public partial class MainPage : PhoneApplicationPage
{
ObservableCollection<String> Words = new ObservableCollection<string>();
public MainPage()
{
InitializeComponent();
listBox1.ItemsSource = Words;
}
private void AddButton_Click(object sender, RoutedEventArgs e)
{
Words.Add(DateTime.Now.ToString());
}
}
Здесь я добавил кнопку и ListBox на простую страницу, и при нажатии на кнопку новый элемент немедленно появляется в ListBox.
Однако, если я перейду с
listBox1.ItemsSource = Words;
до
listBox1.ItemsSource = Words.Where(w => w.Contains(":"));
ListBox больше не обновляется.
Как я могу добавить «фильтр» между моей ObservableCollection и ListBox, и при этом заставить его обновляться без необходимости заново устанавливать .ItemsSource?