【问题标题】:c# wpf listview sort by colum with listviewitemsc# wpf listview 使用listview项按列排序
【发布时间】:2015-02-12 02:55:05
【问题描述】:

我尝试对 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 进行排序?

【问题讨论】:

    标签: c# wpf sorting listview


    【解决方案1】:

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

    【讨论】:

    • 我的意思是数据绑定(使用ItemsSourse 属性),因此您不需要创建每个单独的 ListViewItem。
    • 感谢您的回答 Nadia,“Content.”+sortBy 工作正常 =) 我尝试使用 Itemsource 进行数据绑定(使用 ListViewitems 生成列表,但其他事情不再起作用,例如 Doubleclikevent)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-13
    • 2012-01-07
    • 2015-07-12
    • 2015-08-27
    • 1970-01-01
    • 2011-09-05
    • 1970-01-01
    相关资源
    最近更新 更多