2010-07-04 8 views
1

Je donne les résultats suivants pour obtenir des données d'un Entity Framework 4:Comment puis-je conserver une collection observable triée dans une liste?

IQueryable<Exam> examsQuery = 
    entities.CreateQuery<Exam>("[Exams]").Include("Course"); 
exams = 
    new EntityObservableCollection<Exam>(entities, "Exams", examsQuery); 

Dans mon viewmodel je le code suivant:

public IEnumerable<Exam> Exams { get { return exams; } } 

Et dans mon XAML ce qui suit:

<ListView ItemsSource="{Binding Exams}" SelectedItem="{Binding SelectedExam}" 
    SelectionChanged="ListViewSelectionChanged"> 
     <ListView.View> 
      <GridView> 
       <GridViewColumn DisplayMemberBinding="{Binding Code}" Header="ExamCode" Width="250"/> 
       <GridViewColumn DisplayMemberBinding="{Binding Desc}" Header="Desc" Width="150"/> 
       <GridViewColumn DisplayMemberBinding="{Binding Course.Code}" Header="Course" Width="150"/> 
      </GridView> 
     </ListView.View> 
</ListView> 

Le problème pour moi est que d'abord je voudrais avoir:

1) ListView trié sur la colonne ExamCode 2) Je voudrais qu'il reste trié si par exemple le ExamCode est modifié de manière externe.

Existe-t-il un moyen facile de toujours trier une liste de lecture? J'ai regardé autour de moi et je ne trouve pas de solution du tout.

Merci

Répondre

0

utilisation ICollectionView:

public ICollectionView Exams 
{ 
    get 
    { 
     if (examsView == null) 
     { 
      examsView = CollectionViewSource.GetDefaultView(exams); 
      examsView.SortDescriptions.Add(new SortDescription("Code", ListSortDirection.Descending)); // your sort here 
     } 

     return examsView; 
    } 
} 
+0

Merci pour la réponse rapide. Je vais essayer ça maintenant. –