c#wpf listview按列与listviewitem排序

时间:2015-02-12 02:55:05

标签: c# wpf sorting listview

我尝试对wpf Listview进行排序,这很好..但只有当我添加新项目作为简单对象时:

这有效:

listview_files.Items.Add(new { isdir = (String)ele.Element("isdir"), number = (int)ele.Element("id"), name = (String)ele.Element("name"), size = groesse, right = modes, date = (String)ele.Element("date") });

使用:

listview_files.Items.SortDescriptions.Add(new SortDescription(sortBy, direction));

但如果我添加这样的项目:

ListViewItem myitem = new ListViewItem();
            myitem.Content=new { isdir = (String)ele.Element("isdir"), number = (int)ele.Element("id"), name = (String)ele.Element("name"), size = groesse, right = modes, date = (String)ele.Element("date") };
            myitem.ContextMenu = con2;
            myitem.MouseDoubleClick += myitem_MouseDoubleClick;

         listview_files.Items.Add(myitem);

它总是排序相同,sortdirection或clicked colum之间没有区别(sortBy的值,方向总是正确的) 我认为问题是"内容"属性,但是如何强制SortDescription使用ListViewItem.Content Proberty进行排序?

1 个答案:

答案 0 :(得分:1)

发生这种情况是因为物品集合'直接子节点在第一种情况下是对象本身,在第二种情况下是ListViewItem-s。因此,如果您要求按number排序,则无法在ListViewItem中找到此属性。但是,它会找到Content.number,你可以选择它。但为什么不使用绑定?这是一种更自然的方式。