【问题标题】:WPF ListView group and sortWPF ListView 分组和排序
【发布时间】:2015-12-16 15:35:13
【问题描述】:

我正在尝试对列表中的项目进行分组,并将它们从最旧到最新排序。分组工作完美,它只是不想颠倒这个列表。

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 是一个计算今天日期和订单日期之间差异的属性,效果很好,但我想从最高到最低查看它。图片显示了我得到的,我想扭转它。

【问题讨论】:

    标签: c# wpf listview


    【解决方案1】:

    您的代码是正确的。我进行了测试。可以在视图中看到:

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

    图片:

    【讨论】:

    • 我不明白为什么排序在我的列表上不起作用
    • @arti 你是在调试器还是在屏幕上看到的?
    • @arti 请在您向lst_orders987654326@填写数据的位置显示您的 XAML 和 C# 代码
    • 所有更新和修复,是我很傻,我在构造函数中有另一种排序方法。您的代码运行良好!
    猜你喜欢
    • 1970-01-01
    • 2013-04-09
    • 1970-01-01
    • 1970-01-01
    • 2015-09-26
    • 2013-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多