在 XAML 中对绑定到 ObservableCollection 的 ListView 进行排序

Sort ListView bound to ObservableCollection in XAML

我有一个 ListView 通过 XAML 绑定到 ObservableCollection。我曾经在代码后面进行排序,但是有很多操作我必须记住需要刷新排序。

所以我想让它更干净,让直接在 XAML 中排序更动态。

很遗憾,我找不到 tags/attributes 来执行此操作。我找到的所有示例都是针对使用 <CollectionViewSource.SortDescription> 的 WPF 应用程序,XAML 似乎不支持,至少目前是这样。

我在 UWP Community Toolkit 中找到了一个 AdvancedCollectionView 控件,然后我使用了它。此控件使用现有的 ObservableCollection,ListView(源)现在绑定到此 AdvancedCollectionView。

它似乎有效 - 那么问题是什么。 1) 我现在必须使用带有许多许可证的巨大 Nu-Get 包(我应该阅读 :-) ) 2) 我为绑定到 ListView(单个项目)的 class 实现了 INotifyPropertyChanged,以便在 属性 时刷新 ListView,例如项目的标题更改。这曾经在我切换到 AdvancedCollectionView 之前工作得更早,但现在事件引发者抛出 NullReferenceExcpetion.

所以我现在问自己是否真的没有更多 Out-of-the-Box 方法来完成按绑定 属性 对 ListView 进行排序的简单任务?

显然,AdvancedCollectionView 出现问题是因为当前在未设置过滤器 属性 时存在错误。

我用完整的源代码替换了 NuGet-Package 并对其进行了调试以找到 ItemOnPropertyChanged 中的错误,它在线抛出 NullReferenceException:

filterResult = _filter(item);

因为“_filter”为空。

我报告了这个错误,看起来社区工具包的 2.2 版中将有修复: https://github.com/Microsoft/UWPCommunityToolkit/issues/1686