【问题标题】:Sort ListView bound to ObservableCollection in XAML在 XAML 中对绑定到 ObservableCollection 的 ListView 进行排序
【发布时间】:2018-05-18 19:43:55
【问题描述】:

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

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

不幸的是,我找不到执行此操作的标签/属性。我找到的所有示例都是针对使用 <CollectionViewSource.SortDescription> 的 WPF 应用程序,XAML 似乎不支持,至少目前是这样。

我在 UWP 社区工具包中找到了一个 AdvancedCollectionView 控件,然后我使用了该控件。此控件使用现有的 ObservableCollection,并且 ListView(源)现在绑定到此 AdvancedCollectionView。

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

所以我现在问自己,是否真的没有一种更开箱即用的方法来执行按绑定属性对 ListView 进行排序的简单任务?

【问题讨论】:

  • "。我以前在"后面的代码中进行排序,我能知道你是怎么做的吗?您的意思是您只想在 xaml 中执行此操作而不需要任何代码吗?连AdvancedCollectionView后面都是做排序码,除了需要引用包外,能满足你的需求吗?
  • 由于社区工具包是开源的,您可以参考您需要尝试构建自己的帮助类的部分。
  • 我的意思是,我使用 Sort() 扩展方法“手动”对 ObservableCollection 进行了排序。

标签: sorting xaml listview uwp observablecollection


【解决方案1】:

很明显,出现 AdvancedCollectionView 的问题是因为当前没有设置 Filter 属性时存在错误。

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

filterResult = _filter(item);

因为“_filter”为空。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多