列表视图不在WPF中对日期列进行排序

时间:2013-11-19 09:16:13

标签: c# .net wpf listview date-sorting

我想使用日期列对wpf中的列表视图进行排序。但下面的代码是排序字符串而不是日期。 我已将数据表绑定到列表视图。 这是我的代码。

<ListView.View>
<GridView x:Name="gvDetails" >
<GridViewColumn  Header="Header1"       Width="130"      DisplayMemberBinding="{Binding Column1}" />
<GridViewColumn  Header="Header2"        Width="120"      DisplayMemberBinding="{Binding Column2}"  />
<GridViewColumn  Header="Header3"         Width="120"      DisplayMemberBinding="{Binding Column3}"  />
<GridViewColumn   Header="DateOfEnquiry"   Width="120"     DisplayMemberBinding="{Binding DateOfEnquiry}" />
</GridView>
</ListView.View>

排序代码:

 ICollectionView dataView =
               CollectionViewSource.GetDefaultView(lstvwDetails.ItemsSource);
            if (dataView != null)
            {
                dataView.SortDescriptions.Clear();
                SortDescription sd = new SortDescription("DateOfEnquiry", direction);

                dataView.SortDescriptions.Add(sd);
            }

但是这不是按日期对listview日期列进行排序,而是仅排序为字符串。 请指教。

1 个答案:

答案 0 :(得分:0)

我认为此示例可以帮助您:

string propertyName = "DateOfEnquiry";

ICollectionView dataView = CollectionViewSource.GetDefaultView(lstvwDetails.ItemsSource);
ListSortDirection direction = ListSortDirection.Ascending;

if (dataView.SortDescriptions.Count > 0 && dataView.SortDescriptions[0].PropertyName == propertyName)
{
    if (dataView.SortDescriptions[0].Direction == ListSortDirection.Ascending) direction = ListSortDirection.Descending;
    else direction = ListSortDirection.Ascending;
}
dataView.SortDescriptions.Clear();
dataView.SortDescriptions.Add(new SortDescription(propertyName, direction));