LINQ и Static ObservableCollection - PullRequest
2 голосов
/ 07 ноября 2011

Вероятно, это будут основные вопросы для экспертов по LINQ и архитектуре, однако мне не удается понять проблему, с которой я столкнулся при попытке обновить Static ObservableCollection.

 Me.Grid1.ItemsSource = ContactList

 Me.Grid2.ItemsSource = From s In ContactList Where s.ContactTypes.Any(Function(t) t.ContactTypeName = "Christmas List")

Если я добавлюновый контакт с ContactType"Рождественский список" для ContactList ObservableCollection, Grid1 отражает дополнительный контакт, однако Grid2 не отражает изменение если я не перепривязываю.

В любом случае, чтобы Отразить изменение в Grid2, чтобы показать новый Контакт с запрашиваемым ContactType

Ответы [ 2 ]

1 голос
/ 07 ноября 2011

Grid2 фактически привязан к IEnumerable (Of Contact) вместо Observable Collection. Вот почему это изменение не отражено в Grid2. Вы должны заставить ваш запрос Linq повторно выполняться с использованием события или INotifyPropertyChanged.

1 голос
/ 07 ноября 2011

Это может произойти из-за отложенного выполнения запроса LINQ.Значения выбираются только тогда, когда вы начинаете перечисление по набору результатов.Вот почему вы должны заново привязать источник данных, чтобы увидеть изменения.Попробуйте добавить метод ToList () в конце запроса.Например,

Me.Grid2.ItemsSource = From s In ContactList Where s.ContactTypes.Any(Function(t) t.ContactTypeName = "Christmas List").ToList();
...