2009-05-29 68 views
1

我有一個WPF排序/綁定問題。 (聲明:我很新的WPF和數據綁定所以道歉,如果我問一個非常愚蠢的問題:-))WPF綁定不通知的變化

首先,我有一個linqToSql實體類Contact與它的EntitySet<Booking>財產擔保。

如果我直接將此預訂屬性綁定到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

由於刪除了,這個排序不錯,但它仍然沒有通知出於某種原因所選項目的變化。 – 2009-06-01 08:50:44

0

Hainesy,

是否Booking對象實現INotifyPropertyChangedComments屬性通知更改?

如果沒有,你不能指望TextBox這勢必Comments屬性被自動更新時Comments變化

在這種情況下使用ObservableCollection當加入Booking對象只會讓你更新與變化視圖的好處或從收集

-Rajesh

+0

預訂的評論永遠不會改變。視圖中當前選擇的預訂有哪些變化。這一切工作正常,當我直接綁定到未分類的EntitySet。 – 2009-06-05 10:19:37