【问题标题】:Sort items in the ListBox using XAML使用 XAML 对 ListBox 中的项目进行排序
【发布时间】:2014-12-29 03:03:25
【问题描述】:

我有一个包含项目的列表框,我需要对它们进行排序。我知道我可以在 DataContext 中对数据进行排序,但我想尝试使用 XAML 来实现它。

我已经为 WPF 找到了这个解决方案:

 var view = CollectionViewSource.GetDefaultView(DataContext);
 view.SortDescriptions.Clear();
 if(_sortField.SelectedValue != null)
      view.SortDescriptions.Add(new SortDescription((string)
       _sortField.SelectedValue,_ascending.IsChecked == true ?
       ListSortDirection.Ascending :
       ListSortDirection.Descending));

但我没有 CollectionViewSource 的 GetDefaultView() 方法。有没有办法让这个 XAML 适应 Windows 8.1 ?

【问题讨论】:

    标签: wpf xaml windows-8.1


    【解决方案1】:

    如您所见,CollectionViewSource 在 WinRT (Windows 8.1) 应用程序中有不同的实现。但是ICollectionView 接口。也不同。 WPF ICollectionView 支持排序、分组和过滤,而WinRT implementation 只支持分组。

    您可以使用此代码获取CollectionView

    var source = SourceRepository.GetSamples();
    
    var cvs = new CollectionViewSource();
    cvs.Source = source; 
    var view = cvs.View;
    this.DataContext = view;
    

    但是您将无法使用view.SortDescriptions,因为SortDescriptions 不是类定义的一部分。

    当然,您始终可以使用 LINQ 进行排序和过滤。

    【讨论】:

      猜你喜欢
      • 2011-08-09
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-11
      相关资源
      最近更新 更多