gpt4 book ai didi

c# - WPF ListView 对列单击进行排序

转载 作者:太空狗 更新时间:2023-10-29 22:36:49 25 4
gpt4 key购买 nike

我有一个 ListView ,其中的项目在运行时以具有单列/多列的网格形式添加。现在我需要让排序工作。一旦 ListView 中包含项目并且他们单击该列,它应该在该列上对其进行排序。

下面是 ListView 的代码

<ListView Name="lstValue" Margin="0,0,0,10"></ListView>

填充 ListView 的 C# 代码:

 case "Person":
dt = GetDataTable(GET_Person)
this.lstValue.View = gridview;
gridview.Columns.Add(new GridViewColumn { Header = "Number",
DisplayMemberBinding = new Binding("Number") });
gridview.Columns.Add(new GridViewColumn { Header = "Name",
DisplayMemberBinding = new Binding("Name") });
foreach(DataRow dr in dt.Rows)
{
this.lstValue.Items.Add(new ReportItem { Number = dr["Number"].ToString(),
Name = dr["Name"].ToString() });
}
break;

他们应该能够按姓名或号码排序。

最佳答案

link是 MSDN 方式。主要是处理对 gridview 列标题的点击。

<ListView x:Name='lv' Height="150" HorizontalAlignment="Center" 
VerticalAlignment="Center"
GridViewColumnHeader.Click="GridViewColumnHeaderClickedHandler"
>

在代码中:

GridViewColumnHeader _lastHeaderClicked = null;
ListSortDirection _lastDirection = ListSortDirection.Ascending;

void GridViewColumnHeaderClickedHandler(object sender,RoutedEventArgs e)
{
GridViewColumnHeader headerClicked = e.OriginalSource as GridViewColumnHeader;
ListSortDirection direction;

if (headerClicked != null)
{
if (headerClicked.Role != GridViewColumnHeaderRole.Padding)
{
if (headerClicked != _lastHeaderClicked)
{
direction = ListSortDirection.Ascending;
}
else
{
if (_lastDirection == ListSortDirection.Ascending)
{
direction = ListSortDirection.Descending;
}
else
{
direction = ListSortDirection.Ascending;
}
}

string header = headerClicked.Column.Header as string;
Sort(header, direction);

_lastHeaderClicked = headerClicked;
_lastDirection = direction;
}
}
}

private void Sort(string sortBy, ListSortDirection direction)
{
ICollectionView dataView =
CollectionViewSource.GetDefaultView(lv.ItemsSource);

dataView.SortDescriptions.Clear();
SortDescription sd = new SortDescription(sortBy, direction);
dataView.SortDescriptions.Add(sd);
dataView.Refresh();

基本上就是这样。我没有在列标题上添加一些方向标志符号来显示方向。如果您想了解如何操作,可以引用完整教程(参见上面的链接)。

关于c# - WPF ListView 对列单击进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30787068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com