我有一个包含某些列listViewItems
的列表视图。当我使用排序方法listViewItems.Sort();
时,默认情况下会按列文本进行排序。这是我使用的代码:
private void OnColumnClick(object sender, ColumnClickEventArgs e)
{
int sortColumn = 0; --I only want to sort if you click this column header, not others
if (e.Column == sortColumn)
{
if (listViewItems.Sorting == SortOrder.Ascending)
{
listViewItems.Sorting = SortOrder.Descending;
}
else
{
listViewItems.Sorting = SortOrder.Ascending;
}
}
listViewItems.Sort();
但是,我的物品有一个标签,listViewItems[0].Tag;
可以访问
我想使用该标签对列表进行排序(在我的情况下,标签为int),但是我不知道该怎么做,也不知道类似信息。排序方法不接受任何参数。我试图创建一个列排序器,但它也希望有一个列。
ListViewColumnSorter lvwColumnSorter;
lvwColumnSorter = new ListViewColumnSorter();
listViewItems.ListViewItemSorter = lvwColumnSorter;
lvwColumnSorter.SortColumn = ?;
有什么想法吗? 预先感谢。
答案 0 :(得分:1)
var items = ListView.Items.Cast<ListViewItem>().OrderBy(x => x.Tag).ToList();
ListView.Items.Clear();
ListView.Items.AddRange(items.ToArray());