2009-05-29 3 views
1

У меня проблема сортировки/привязки 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 (см this post), я пытаюсь связать вместо наблюдаемой коллекции, например:

// 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); 
+0

Спасибо, это сортирует в порядке, но он по-прежнему не уведомит выбранные изменения элементов для какой-либо причины. –

0

Hainesy,

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

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

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

-Rajesh

+0

Комментарии для бронирования никогда не меняются. Какими изменениями является выбранное бронирование в данный момент. Все это прекрасно работает, когда я привязываюсь непосредственно к несортированному EntitySet. –

Смежные вопросы