我尝试对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进行排序?
答案 0 :(得分:1)
发生这种情况是因为物品集合'直接子节点在第一种情况下是对象本身,在第二种情况下是ListViewItem-s。因此,如果您要求按number
排序,则无法在ListViewItem
中找到此属性。但是,它会找到Content.number
,你可以选择它。但为什么不使用绑定?这是一种更自然的方式。