Markos, ευχαριστώ που ασχολήθηκες κατ' αρχήν.
> Ως προς ποιο property θέλεις να κάνεις το sorting; Έτσι όπως είναι γραμμένο, η ταξινόμηση γίνεται με βάση το CategoryId.
Θα έπρεπε να γίνεται, αλλά δε γίνεται. Εκεί είναι το θέμα :)
Anyways, νομίζω πως έβγαλα μια άκρη.
Η GetTable που καλεί ο ObjectDataProvider επιστρέφει ένα instance τύπου System.Data.Linq.Table<ItemCategory>. To view που
δημιουργεί το CollectionViewSource όταν διαβάζει αυτό το instance είναι τύπου BindingListCollectionView και εκεί δείχνει να είναι
το πρόβλημα. Σύμφωνα με διάφορους τύπους που γράφουν στο ίντερνετ (πόσο έγκυρο reference!), ένα BindingListCollectionView
δεν μπορεί να σορτάρει τα data, πρέπει να είναι ήδη σορταρισμένα. Για να διασκεδάσουμε περισσότερο, δεν προκύπτει κανένα μήνυμα
λάθους, το SortDescription απλά αγνοείται.
Μετά από διάφορα πειράματα, κατέληξα στο εξής workaround:
Η εξής συνάρτηση
public ObservableCollection<ItemCategory> GetCategories()
{
return new ObservableCollection<ItemCategory>(base.GetTable<ItemCategory>());
}
γραμμένη σαν extension του DemoDBDataContext, παίρνει το Table<ItemCategory> και το επιστρέφει σαν ObservableCollection
στον καλούντα ObjectDataProvider. Τώρα το view του CollectionViewSource είναι τύπου ListCollectionView και το sort δουλεύει
μια χαρά.
Ουφ!