[英]Sorting ListView in WPF
I tried to sort my listview like this: http://www.wpf-tutorial.com/listview-control/listview-how-to-column-sorting/ 我试图像这样对我的列表视图进行排序: http : //www.wpf-tutorial.com/listview-control/listview-how-to-column-sorting/
XAML: XAML:
<ListView x:Name="lvComputers" HorizontalAlignment="Left" Height="440" Margin="10,43,0,0" VerticalAlignment="Top" Width="560" SelectionChanged="lvComputers_SelectionChanged">
<ListView.View>
<GridView>
<GridViewColumn Width="120" DisplayMemberBinding="{Binding computerName}">
<GridViewColumn.Header>
<GridViewColumnHeader Tag="Computername" Click="lvComputersColumnHeader_Click">Computername</GridViewColumnHeader>
</GridViewColumn.Header>
</GridViewColumn>
<GridViewColumn Width="80" DisplayMemberBinding="{Binding operatingSystem}">
<GridViewColumn.Header>
<GridViewColumnHeader Tag="Betriebssystem" Click="lvComputersColumnHeader_Click">Betriebssystem</GridViewColumnHeader>
</GridViewColumn.Header>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
C#: C#:
private void loadComputers()
{
lvComputers.ItemsSource = mainController.getComputers();
lvComputers.Items.SortDescriptions.Add(new SortDescription("Computername", ListSortDirection.Ascending));
CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(lvComputers.ItemsSource);
view.SortDescriptions.Add(new SortDescription("Computername", ListSortDirection.Ascending));
view.Filter = UserFilter;
}
private void lvComputersColumnHeader_Click(object sender, RoutedEventArgs e)
{
GridViewColumnHeader column = (sender as GridViewColumnHeader);
string sortBy = column.Tag.ToString();
if (listViewSortCol != null)
{
AdornerLayer.GetAdornerLayer(listViewSortCol).Remove(listViewSortAdorner);
lvComputers.Items.SortDescriptions.Clear();
}
ListSortDirection newDir = ListSortDirection.Ascending;
if (listViewSortCol == column && listViewSortAdorner.Direction == newDir)
newDir = ListSortDirection.Descending;
listViewSortCol = column;
listViewSortAdorner = new SortAdorner(listViewSortCol, newDir);
AdornerLayer.GetAdornerLayer(listViewSortCol).Add(listViewSortAdorner);
lvComputers.Items.SortDescriptions.Add(new SortDescription(sortBy, newDir));
}
"getComputers" returns a list of computers based on this class: “ getComputers”返回基于此类的计算机列表:
public class Computers
{
public String computerName { get; set; }
public String operatingSystem { get; set; }
}
UserFilter is for a searchbox. UserFilter用于搜索框。 But for some reason the sorting wont work. 但是由于某种原因,排序将无法进行。
I tried to add this 我试图添加这个
lvComputers.Items.SortDescriptions.Add(new SortDescription("Computername", ListSortDirection.Ascending));
to 至
loadComputers();
but it doesnt work either. 但它也不起作用。
what am i doing wrong? 我究竟做错了什么?
SortDescription
strings are case sensitive: SortDescription
字符串区分大小写:
new SortDescription("Computername", ...
should be 应该
new SortDescription("computerName"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.