c#wpf listview使用listviewitems按列排序

c#wpf listview使用listviewitems按列排序,c#,wpf,sorting,listview,C#,Wpf,Sorting,Listview,我尝试对wpf列表视图进行排序,这很好。。但仅当我将新项目添加为简单对象时: 这项工作: 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") }

我尝试对wpf列表视图进行排序,这很好。。但仅当我将新项目添加为简单对象时:

这项工作:

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") });
与:

但如果我添加如下项目:

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 Column之间没有差异(sortBy、direction的值始终正确)
我认为问题在于“Content”属性,但如何强制SortDescription使用ListViewItem.Content属性进行排序?

这是因为items集合的直接子对象在第一种情况下是对象本身,在第二种情况下是-ListViewItem-s。因此,如果您要求它按
number
进行排序,它将不会在
ListViewItem
中找到此属性。但是,它会找到
Content.number
,您可以使用它。但是为什么不使用绑定呢?这将是一种更自然的方式。

我指的是数据绑定(使用
itemsCourse
属性),因此您不需要创建每个单独的ListViewItem。感谢您的回答Nadia,“Content.”+sortBy works fine=)我尝试了使用Itemsource进行数据绑定(使用ListViewitems生成一个列表,但是其他东西不再起作用,例如DoubleClikeEvent)
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);