问题标签 [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 投票
1 回答
1647 浏览

wpf - ICollectionView.Refresh 不会重新过滤集合

我的视图模型中有 3 个 cascading ICollectionView,其中一个依赖于另一个。第一个不绑定到视图上的控件,而是用作两个即将出现的作为主细节显示给用户的键过滤器。

我的问题是,我将过滤谓词附加到主集合视图,但是当我Refresh从它调用时,它根本不会进入过滤器。我什至尝试从过滤谓词中抛出一个异常,所以如果调试器无法访问该代码,我仍然会看到它到达,但没有抛出异常。

我调用 Refresh 的原因是什么,但它没有带我进入过滤谓词 - 这意味着它没有重新创建视图?

0 投票
1 回答
1097 浏览

wpf - 从单个 ObservableCollection 过滤两个 ICollectionView

我在使用两个与源ICollectionView相同的实例时遇到问题ObservableCollection

当我过滤一个ICollectionView时,似乎另一个也ICollectionView被相同的过滤器过滤了。ICollectionView我用方法实例化CollectionViewSource.GetDefaultView

这是预期的行为吗?我不这么认为,但也许我错过了一些东西。

这是 ViewModel 的构造函数:

哪里ListaVoci是一个ICollectionView并且RootVM.CollectionVociCE是一个ObservableCollection。我有两个不同的用户控件,它们有两个不同的 ViewModel 实例。

这是用户控件的构造函数:

FiltraListaVoci在哪里

0 投票
1 回答
354 浏览

wpf - 如何根据 ICollectionView 过滤结果更新 UI?

我有两个控件 -SearchFilterSearchResult. 过滤器包含带有用于过滤结果的命令的按钮。结果控件具有ListViewICollectionView属性的绑定。

我的带有过滤器逻辑的模型视图:

问题如下:
如果我将带有命令的按钮从过滤器控件移动到结果之一,我的 UI 会在每个过滤器操作后更新。但我想把这些东西分开。我尝试使用SearchList.Refresh()并没有成功PropertyChangedFilterTheResults()

0 投票
1 回答
1731 浏览

wpf - 将组合框绑定到 CollectionView 会显示过滤掉的元素。为什么?

Wpf 绑定对于熟悉它的人来说很有趣,对于新手来说是噩梦。如果我将一个组合框绑定到注释掉的 CollectionView,该控件将显示所有元素,包括那些被过滤器排除的元素。如果我将相同的组合框绑定到 ICollectionView 它只显示过滤的元素,它是好的。

这是我用来创建 CollectionView 和 ICollectionView 的代码

我检查了 CollectionView 从 C# 代码打印它的所有元素,它只包含过滤的元素,所以 CollectionView 是好的。如果我将它绑定到组合框,为什么会得到所有未过滤的元素?

谢谢菲利波

0 投票
3 回答
7369 浏览

c# - 转换谓词表达>

Predicate<T> to Expression<Func<T, bool>>可以以某种方式转换 a吗?

我想使用我的 ICollectionView 的过滤器来使用下一个 IQueryable 函数:

谢谢

0 投票
3 回答
944 浏览

c# - how do i work with ListView.Item.CurrentItem

this is my xaml:

and this is my code behind

how do i work with currentSerie? how do i access the data which is stored in each Item? i cant access properties and i cant convert it to anything else then object.

also interesting, the output of the code is not "object" but "Series" so ToString() and GetType() gets the type right.

thx for any help

0 投票
1 回答
275 浏览

wpf - 设置为 ICollectionView.Filter 的方法将类中的其他属性视为 null,即使它们不为 null

我正在尝试在 WPF 中实现一个基本的过滤列表框。用户键入一些内容,列表缩小到以键入的短语开头的值。

我有:

  • 一个视图
    • 一个 TextBox,其 Text 属性绑定到InstitutionFilteringStringViewModel 类中的属性,该属性设置为数据上下文,
    • 一个 ListBox,其 ItemSource 属性绑定到视图模型中的一个ICollectionView命名Institutions
  • 具有上述属性的ViewModel类。

代码(去掉了不相关的部分):

视图和绑定:

所以,说到点子上了。的设置器InstitutionFilteringString被正确调用。根据此处的建议,setter 调用集合视图上的 Refresh() 方法。该FilterInstitutions()方法被调用。

现在是错误:即使字符串是在一秒钟之前设置的,但在FilterInstitutions方法内部它是空的。如果我在调用堆栈中使用调试器,从设置器的角度来看,它仍然设置为类型化的值,但在过滤方法内部它是空的。

在 setter 中有一行注释掉的代码。取消注释它可以修复错误,但这几乎不是应该如何完成的。

我究竟做错了什么?

(我不确定,但在我看来,setter 和过滤方法似乎对类的两个不同实例进行操作。但怎么可能,我只创建一个实例,并且类不可克隆)

编辑

对不起,我好像撒谎了。我在构造函数中放置了一个断点,看来我确实创建了该类的两个实例并为两者CollectionViewSource.GetDefaultView返回相同的实例。ICollectionView好吧,但我实际上希望对同一个集合有两个视图。好吧,我已经遵循了这个答案,它似乎有效:)

0 投票
1 回答
908 浏览

silverlight - Silverlight - MVVM:绑定到填充有“ChildViewModel”的 ICollectionView 的 Datagrid 不会刷新数据

我还没有找到类似的案例,所以我一直在努力。我是 Silverlight 的新手,并且为 ICollectionView 的刷新而苦苦挣扎。刷新方法实际上不会刷新我的数据网格中的数据,尽管它们已更改(在调试器中查看它,在对数据网格进行几次排序后,它最终会反映更改)。恐怕我完全搞砸了我的应用程序的整个结构。我认为这个问题与我实现的“MainViewModel-ChildViewModel”原理有关。

这是我的构造:在我的主页中,我添加了一个“主视图模型”作为资源。

然后 Grid LayoutRoot 将它的 datacontext 设置为此视图模型:

在“主视图模型”中,我定义了一个 ObservableCollection,它保存将以 CollectionViewSource 形式显示在数据网格中的数据。ObservableCollection 项目基于代表实际数据的“ChildViewModel”,它是每个数据行的逻辑。意思是:添加到 ObservableCollection 的每个项目都是“ChildViewModel”的类型。我这样设计它是因为我将显示几个“详细信息页面”(基于选择的功能或双击单元格),然后允许查看、修改和处理另一个用户控件中的数据。不允许在数据网格中直接修改。这样,我只需要将 childviewmodel 传递到下一页(或用户控件),然后传递数据及其逻辑。

在 db-fetch 的 Completed 事件处理程序中,使用 childviewmodel 填充 observablecollection

我在主页上还有一个绑定到此 ICollectionView 的数据网格。itemsource 是“ChildViewModel”列表。它的属性是绑定的:

现在所有这些工作都很好而且很顺利。单击功能按钮时,我打开另一个用“Childviewmodel”实例或继承它初始化的用户控件。(某些功能是子窗口和其他功能,它显示了一个显示所有详细信息等的用户控件)

例如子窗口:

现在我修改这个子窗口中的日期返回到主页。返回时,我在 collectionView (Requests.Refresh();) 上调用 refresh -> 但数据不会刷新。好吧..有时它会,但大多数时候它不会,直到我对数据网格的更改后的coloum进行了2-3次排序(单击标题进行排序和排序..并排序)

我究竟做错了什么?任何人都可以帮忙吗?整个结构混乱吗?

干杯艾莱姆

0 投票
0 回答
542 浏览

wpf - ICollectionView 取消当前更改

我正在寻找一种方法来根据单击的项目取消 CurrentChanging 事件。在我的应用程序中,我使用 ICollectionView 来保存我的视图模型列表,这些视图模型在 tabcontrol 中呈现为 tabitems。对于特定的视图模型,我需要在激活视图模型之前进行一些属性检查。为了做到这一点,我现在需要特定的视图模型将成为下一个当前项目。根据属性检查的结果,应该允许或取消当前项目的更改(仅针对特定视图模型)。我不想对所有其他视图模型进行属性检查。

有没有办法在设置之前访问下一个当前项目?

编辑:

另一个想法:在 currentchanged 事件中,我进行属性检查,并根据其结果,向父视图模型(包含视图模型列表)发送一条消息,以触发它将当前移动到第一个。我希望这会触发一个新的当前更改事件,但它不会。当前项始终是在第一个当前更改事件之前选择的视图模型。

那里发生了什么?

0 投票
0 回答
80 浏览

wpf - MenuItem 和 IcollectionView

我想在菜单中显示可用语言的列表。这些语言可作为 ICollectionView 使用。

这是代码:

Languages 是从文化列表中创建为默认视图的 ICollectionView。菜单显示正确。现在我想在菜单中的选择更改时绑定到 CurrentChanged 事件,但是由于没有 IsSynchronizedWithCurrentItem 属性,我该怎么做?

有没有办法一次只检查一个项目?