Как я могу сохранить наблюдаемую коллекцию отсортированной в списке? - PullRequest
1 голос
/ 04 июля 2010

У меня есть следующее для получения данных из Entity Framework 4:

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

В моей модели представления у меня есть следующий код:

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

И в моем XAML следующее:

<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>

Проблема для меня в том, что сначала я хотел бы иметь:

1) ListView, отсортированный по столбцу ExamCode 2) Я хотел бы, чтобы он оставался отсортированным, если, например, ExamCodeизменено внешне.

Существует ли простой способ всегда сохранять отсортированный просмотр списка?Я посмотрел вокруг и не могу найти решение вообще.

Спасибо

1 Ответ

0 голосов
/ 04 июля 2010

Использовать 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;
    } 
} 
...