2015-12-16 2 views
2

Я пытаюсь группировать элементы в моем списке и сортировать их от самых старых до новейших. Группировка работает отлично, она просто не хочет инвертировать этот список.WPF ListView группа и сортировка

WPF Код:

  <ListView x:Name="lst_orders" Margin="5" GridViewColumnHeader.Click="results_Click"> 
      <ListView.Resources> 
       <Style TargetType="ListViewItem"> 
        <Style.Triggers> 
         <Trigger Property="IsKeyboardFocusWithin" Value="true"> 
          <Setter Property="IsSelected" Value="true" /> 
         </Trigger> 
        </Style.Triggers> 
       </Style> 
      </ListView.Resources> 
      <ListView.View> 
       <GridView> 
        <GridViewColumn> 
         <GridViewColumn.CellTemplate> 
          <DataTemplate> 
           <Button x:Name="goto_parts" Content="Show parts" Width="AUTO" Padding="2" Margin="2" Background="#FF179917" Click="goto_parts_Click"/> 
          </DataTemplate> 
         </GridViewColumn.CellTemplate> 
        </GridViewColumn> 
        <GridViewColumn Header="Order ID" Width="100" DisplayMemberBinding="{Binding fullOrderId}" /> 
        <GridViewColumn Header="Job Status" Width="100" DisplayMemberBinding="{Binding status}" /> 
        <GridViewColumn Header="Order Type" Width="150" DisplayMemberBinding="{Binding orderType}" /> 
        <GridViewColumn Header="Customer Notes" Width="250" DisplayMemberBinding="{Binding notes}" /> 
        <GridViewColumn Header="Admin Notes" Width="250" DisplayMemberBinding="{Binding adminNotes}" /> 
        <GridViewColumn Header="Production Notes" Width="100" DisplayMemberBinding="{Binding production_notes}" /> 
       </GridView> 
      </ListView.View> 
      <ListView.GroupStyle> 
       <GroupStyle> 
        <GroupStyle.HeaderTemplate> 
         <DataTemplate> 
          <StackPanel Orientation="Horizontal" Background="Gray"> 
           <TextBlock Text="Days: " FontSize="18" FontWeight="Bold"/> 
           <TextBlock Text="{Binding Name}" FontSize="18" FontWeight="Bold"/> 
           <TextBlock Text=" Systems: " FontSize="18" FontWeight="Bold"/> 
           <TextBlock Text="{Binding ItemCount}" FontSize="18" FontWeight="Bold"/> 
          </StackPanel> 
         </DataTemplate> 
        </GroupStyle.HeaderTemplate> 
       </GroupStyle> 
      </ListView.GroupStyle> 
     </ListView> 

C# Код:

 ICollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(lst_orders.ItemsSource); 
     PropertyGroupDescription groupDescription = new PropertyGroupDescription("daysOld"); 

     view.GroupDescriptions.Add(groupDescription); 
     view.SortDescriptions.Add(new SortDescription("daysOld", ListSortDirection.Descending)); 

     lst_orders.ItemsSource = view; 

daysOld это свойство, которое вычисляет разницу между текущей датой и датой заказа, работает отлично, но я хочу увидеть его с самой высокой номер до самого низкого. Рисунок показывает, что я получаю, и я хочу изменить его.

enter image description here

ответ

1

Ваш код correct.I've сделал тест. Это можно увидеть в виду:

C#:

List<SomeClass> list = new List<SomeClass>(); 
Random rnd = new Random(); 
for (int i = 0; i < 10; i++) 
{    
    list.Add(new SomeClass() { DaysOld = DateTime.Now.Add(new TimeSpan(0, rnd.Next(25), 0))}); 
} 
ICollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(list); 
PropertyGroupDescription groupDescription = new PropertyGroupDescription("daysOld"); 
view.GroupDescriptions.Add(groupDescription); 
view.SortDescriptions.Add(new SortDescription("DaysOld", ListSortDirection.Descending)); 
listBox.ItemsSource = view; 
listBox.DisplayMemberPath = "DaysOld"; 

XAML:

<ListBox Name="listBox"/>   

Модель:

public class SomeClass 
{ 
    public DateTime DaysOld { get; set; } 
} 

Изображение:

enter image description here

+0

Я не понимаю, почему сортировка не работает в моем списке, тогда – arti

+0

@arti вы видите в отладчике или на экране? – StepUp

+0

на экране, см. Обновленное сообщение с изображением – arti

Смежные вопросы