问题标签 [icollectionview]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2976 浏览

wpf - 为什么使用 CollectionViewSource.SortDescriptions 排序很慢?

这是您单击 中的列标题时的默认排序方法DataGrid。当底层列表包含 100,000 个项目时,刷新视图大约需要 20 秒。SortDescription在 a 上设置 s时可以观察到相同的延迟CollectionView

通过使用ListCollectionView.CustomSort或通过排序和重新分配列表进行排序几乎可以立即进行。

为什么会出现这种延迟?这只是对绑定属性的“反射税”吗?

0 投票
1 回答
19473 浏览

wpf - WPF ICollectionView 过滤

我编写了用于在 ComboBox中过滤项目的代码:

我的问题是,你会怎么做?

我认为这种带有反射的解决方案可能会很..

0 投票
1 回答
266 浏览

wpf - 查找所有附加到集合的 ICollectionView

我们有多个基于同一个集合的过滤器。即我们以多种方式展示同一个集合。我想做的是在属性更改时要求所有 CollectionViews 刷新(因为只有在从集合中添加/删除项目时,集合视图才会重新过滤)。有没有办法找到与给定集合关联的所有集合视图。集合视图和集合之间是否存在双向链接,或者确定此链接的方法。

PS我不认为答案是

因为这将为我提供集合的默认视图,而不是与集合关联的所有 ICollectionView。

0 投票
1 回答
5859 浏览

c# - WPF ObservableCollection CollectionView.CurrentChanged 未触发

我的一个ICollectionViews 有问题。'事件未触发ICollectionViewCurrentChanged

请在下面查看我的代码。

XAML:

和 C#(视图模型)

请帮忙。提前致谢。

0 投票
1 回答
570 浏览

wpf - 在 WPF 中创建视图的视图

好的,所以我需要ICollectionView从现有的ICollectionView. 这个想法是我可以在现有视图上设置任何过滤器/分组/排序,然后从该“基本”视图创建其他视图,实际上是“分层”或聚合我的过滤器等。

ObservableCollection<T>当源集合(an )更新和数据项更新时,我需要最终视图“自动”更新其项目——比如调用该Refresh()方法。我需要避免对所有视图调用 Refresh,因为我们不知道原始集合和最终视图之间的所有视图,而且Refresh()速度非常慢。

我们试图避免滚动我们自己的视图类——我们更愿意(强烈)使用 .net 库中已经存在的东西。

更新

我们已就此致电 Microsoft。我知道其他人也有同样的问题,至少是WPF 博士告诉我的。

0 投票
1 回答
3893 浏览

c# - 如果基础 DataTable 有零行,ICollectionView.SortDescriptions 排序不起作用

我们有一个 WPF 应用程序,它在 ListView 中有一个 DataGrid。

我们生成一堆或动态列(取决于我们显示的报告)

然后我们进行查询并逐行填充DataTable,这个查询可能有也可能没有数据。(不是问题,应该是空网格)我们将ListView的ItemsSource设置为DataTable的DefaultView。

然后我们(查看用户对app的通行证使用情况,在列上设置排序)排序方法如下:

在零数据表行场景中,排序不“成立”?如果我们动态添加行,它们将不会按排序顺序。

如果在应用排序时 DataTable 至少有 1 行,并且我们动态地将行添加到 DataTable 中,则行 com in 排序正确。

我已经构建了一个独立的应用程序来复制这个......

这很烦人,我可以添加一个检查以查看 DataTable 是否为空,然后重新应用排序...

任何人都知道这里发生了什么,我做错了什么吗?

仅供参考:如果也来自 MSDN,我们的依据是:http: //msdn.microsoft.com/en-us/library/ms745786.aspx

更新:

排序不是“持有”的意思是,ICollectionView.SortDescriptions 有一个 SortDescription,但没有对添加的数据进行排序,如果在添加 SortDescription 时有行,那么只有在基础 DataTable 中没有行时才会再次发生,然后一切效果很好~

0 投票
1 回答
1837 浏览

wpf - ListView 中的 ICollectionView 排序问题

我看到ICollectionView引入了 WPF 来处理需要启用排序和过滤的情况。我什至看过几篇对项目进行排序的文章,但我主要担心的是为什么我的方法失败了。让我们看看我的代码:

在代码隐藏中,当单击项目时,我会这样做:

因此,每当单击标题时,ListBox都需要对项目进行排序。我使用一个名为 Source 的属性来保存集合,然后通过调用来使用它lvItems.DataContext = this.Source.但是代码似乎不起作用。

0 投票
1 回答
793 浏览

c# - IEditableCollectionView 添加的对象类型是什么?

使用 IEditableCollectionView addNew() 方法添加对象相当不错。但是,我不确定它与我拥有的通用代码的效果如何。

我有一个基类的 ObservableCollection。根据用户想要看到的内容,可以用 DerivedA 或 DerivedB (或多个其他派生类型类)填充。它从来没有超过 1 种类型。我对此有以下问题,其中 1 号是主要问题。

1)调用addNew()方法的时候添加了什么类型的对象。我猜是基数,但不确定。如果 Base 是抽象的呢?无论如何我可以确保它添加了一个特定的类型,或者它是否已经实现了它已经添加了最相关的类型?

2) 在使用派生类时,我是否要求 ObservableCollection 遇到麻烦?

3)派生类都单独实现 IEditableObject 但 Base 没有。我的愚蠢是错误的,因为我认为当你实现时你必须定义方法。我可以将它们定义为抽象,然后在派生类中覆盖它们,对吗?如果我不这样做,我会遇到 IEditableCollection 的麻烦。

更新:

我成功地修复了第 3 项)基类实现 iEditableObject 并将抽象虚拟方法扔到它的派生类中。addNew 方法不起作用,即使列表中填充了派生项。

我见过一种半解决方案。.Net framework 4.0 实现了一个名为 AddNewItem 的新方法,您可以在其中定义要添加的项目。应该解决非无参数构造函数和基类的问题。但是我在 3.5 工作

有什么我能做的吗?

0 投票
1 回答
389 浏览

wpf - 更改属性值后重新建立 WPF 数据绑定

我现在正在玩 ICollectionView,遇到了一个问题,我认为我理解“为什么”,但不理解“我该如何解决它”。:)

我有一个数据绑定到 ICollectionView 的 ComboBox,它最初是使用以下代码设置的:

一切正常,直到我执行一段代码,该代码生成一个新的IEnumerable<string>并使用与上面相同的代码再次设置 NameView。一旦我这样做,CurrentItem将不再正常工作。

ObservableCollection<string>在将数据绑定到 ComboBoxes之前,我遇到过这个问题,我通过使用Clear()Add()不是将ObservableCollection<string>属性设置为新的ObservableCollection<string>.

我的问题包括: 1. 如果我希望能够将属性设置为新集合,我可以以某种方式重新建立与新集合的数据绑定吗?如果是这样,怎么做?如果不是,你能解释一下为什么这根本不可能的背后的 WPFisms 吗?2. 处理ObservableCollection<string>or变化的最佳方法是ICollectionView什么?我只是清除和添加的方法是唯一的方法吗?

0 投票
3 回答
6362 浏览

wpf - 如何绑定到 ICollectionView 的 CurrentItem

我想要一个属性到当前项的一个ICollectionView我该怎么办呢?ICollectionView用于绑定到组合框,如何将另一个控件绑定到的ICollectionView选定项?