1

WPF の並べ替え/バインドの問題があります。(免責事項:私はWPFとデータバインディングに非常に慣れていないので、本当にばかげた質問をしていたら申し訳ありません:-))

まず、プロパティ Bookings をContact持つlinqToSql エンティティ クラスがあります。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);

しかし、これはコメントテキストボックスに正しく通知されないようで、更新されます。

バインドの前後でデータをソートするためのソリューション、または機能する別のソリューションを誰かが持っている場合、それは大歓迎です。

4

2 に答える 2

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);
于 2009-05-29T15:53:52.640 に答える
0

ハイネシー、

オブジェクトは、プロパティの変更を通知するためにBooking実装されていますか?INotifyPropertyChangedComments

そうでない場合、変更時にプロパティにTextBoxバインドされているものが自動的に更新されることを期待できませんCommentsComments

この場合に使用すると、コレクションからオブジェクトが追加または削除されたObservableCollectionときに、ビューを変更して更新するという利点しか得られません。Booking

-ラジェッシュ

于 2009-06-05T05:50:25.313 に答える