WPF привязка не уведомляет об изменениях

У меня есть проблема сортировки / связывания WPF. (Отказ от ответственности: я очень плохо знаком с WPF и связыванием данных, поэтому извиняюсь, если задаю действительно тупой вопрос:-))

Во-первых, у меня есть класс сущности linqToSql Contact с EntitySet<Booking> Бронирование недвижимости на нем.

Если я напрямую свяжу это свойство Bookings с ListViewкажется, что приложение правильно уведомляет об изменениях выбранного элемента в ListViewтак, что текстовое поле с {Binding Path=Bookings/Comments} обновляет правильно.

// This code works, but Bookings is unsorted  
var binding = new Binding();
binding.Source = contact.Bookings;
bookings.SetBinding(ItemsControl.ItemsSourceProperty, binding);

Однако, так как я не могу найти способ сортировки EntitySet (см. Этот пост), я пытаюсь вместо этого связать с коллекцией Observable, например:

// This code doesn't notify of selected item changes in the ListView
var binding = new Binding();
binding.Source = new ObservableCollection<Booking>(contact.Bookings.OrderByDescending(b => b.TravelDate).ToList());
bookings.SetBinding(ItemsControl.ItemsSourceProperty, binding);

Но это, кажется, не уведомляет текстовое поле комментариев правильно, чтобы оно обновлялось.

Если у кого-то есть решение для сортировки данных до или после его привязки, или другое решение, которое будет работать, это будет высоко ценится.

2 ответа

Решение

Вы должны привязать к CollectionView а не сама коллекция. Это позволит вам указать любые критерии сортировки, которые вам нужны. Пример:

var collectionView = new ListCollectionView(contact.Bookings);
collectionView.SortDescriptions.Add(new SortDescription("TravelDate", ListSortDirection.Ascending));
var binding = new Binding();
binding.Source = collectionView;
bookings.SetBinding(ItemsControl.ItemsSourceProperty, binding);

Hainesy,

Ли Booking объект реализовать INotifyPropertyChanged уведомить об изменении в Comments имущество?

Если нет, вы не можете ожидать TextBox который связан с Comments свойство будет автоматически обновляться при Comments менять

С помощью ObservableCollection в этом случае вы получите только обновление представления с изменениями, когда Booking объекты добавляются или удаляются из коллекции

-Rajesh

Другие вопросы по тегам