我有一个WPF ListView
,其中一个List<T>
为ItemsSource
。
现在,我要查询绑定到ListView
的列表名称。我该如何实现?
我需要List<T>
的名称,以便可以重用该函数。示例:
private void Sort(ListView lv)
{
lv.ItemsSource.Sort((x,y) => y.Name.CompareTo(x.Name)); // does not work
}
我有一个WPF ListView
,其中一个List<T>
为ItemsSource
。
现在,我要查询绑定到ListView
的列表名称。我该如何实现?
我需要List<T>
的名称,以便可以重用该函数。示例:
private void Sort(ListView lv)
{
lv.ItemsSource.Sort((x,y) => y.Name.CompareTo(x.Name)); // does not work
}
如果您在此处查看代码:
https://www.wpf-tutorial.com/listview-control/listview-sorting/
您会发现您不需要列表名称即可对其进行排序。
编辑: 而且,您可以仅使用通用字符串(在您的情况下似乎是“名称”)引用列。
列表视图与设置或绑定到它的项源的默认视图一起使用。 您可以获取对此的引用并应用排序描述符。
链接中的代码:
public ListViewSortingSample()
{
InitializeComponent();
List<User> items = new List<User>();
items.Add(new User() { Name = "John Doe",Age = 42 });
items.Add(new User() { Name = "Jane Doe",Age = 39 });
items.Add(new User() { Name = "Sammy Doe",Age = 13 });
items.Add(new User() { Name = "Donna Doe",Age = 13 });
lvUsers.ItemsSource = items;
CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(lvUsers.ItemsSource);
view.SortDescriptions.Add(new SortDescription("Age",ListSortDirection.Ascending));
}
在该sortdescription中用“ Name”替换年龄,然后在Name属性中对其进行排序。