问题标签 [collectionviewsource]

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 回答
1751 浏览

c# - 在绑定到 CollectionViewSource 的 Combobox 中设置初始值

我正在使用 WPF 和 MVVM 模式。所有绑定到列表的组合框都可以正常工作,但我有一个使用 aCollectionViewSource进行过滤的级联下拉列表。过滤有效,setter 也有效(在搜索答案时,我看到另一个人遇到了麻烦),但我无法设置初始值。我尝试了几种方法,但似乎都没有影响所选项目。

Viewmodel ctor 和 Property setter(_ticket.SelectedSubstatus 在模型构造函数中设置):

这是组合框 XAML

CollectionViewSource由 MoveCurrentTo() 设置后,并且通过测试检查时,来自 的当前项为空。我究竟做错了什么?

0 投票
2 回答
79 浏览

silverlight-4.0 - 永久排序集合

我有一个由 collectionviewsource 向用户公开的可观察集合。集合中项目的属性之一是 sortorder。我试图允许用户永久使用此集合并将更改传播到数据库。

我有 CVS 工作,我可以在列表框中显示单个项目时对其进行处理。但是现在我必须更改 item.sortorder==cvs.currentindex 并且我无法找出正确的方法来执行此操作。

编辑

显然我不够清楚。Sortorder 是我的数据库中的一个字段,它是我的对象的一部分,它允许用户控制列表控件中显示的项目的位置。我试图让我的用户能够通过将 sortorder 字段的值更改为等于显示项目的当前索引来更改这些项目在未来的排序方式。

项目当前排序顺序值为 3。

用户将显示的列表项移动到位置 0(即第一个位置)

items new sortorder=0 具有原始排序顺序的项目将变为 1 等

这可以通过循环排序的 CVS 并使 Item.SortOrder= CVS.Item.index

0 投票
3 回答
1365 浏览

wpf - WPF CollectionViewSource.Filter 性能与 DataTrigger

实体框架提供具有名为 ChangeTracker.State 的属性的可跟踪实体。使用它我们可以识别实体是否被删除。

在我们的列表中,我们不想显示已删除的实体。

哪个更快?

方法一:使用 CollectionViewSource.Filter 测试并移除 Record

方法二:在ItemTemplate.DataTemplate中添加DataTrigger来测试隐藏Item

谢谢。

0 投票
1 回答
2335 浏览

.net - WPF - CollectionViewSource 过滤器不工作

我已经获得了一个控件,它允许从 codeproject 文章http://www.codeproject.com/KB/WPF/MultipleSelectionControl.aspx中选择多个项目。基本上它有 2 个列表框。一个从所有项目开始,当用户选择其中一些项目时,它们会移动到其他列表框。Control 为这两个列表定义了两个依赖属性,最初包含所有项目的属性是 AvailableItems。在控件的 ControlTemplate 中使用如下:

我在我的项目中使用控件作为:

我正在尝试通过将 AvailableItems 绑定到 CollectionViewSource 并定义一个名为 Data_Filter 的过滤器函数来过滤它。AllItems 是一个 List 对象,它包含字符串。初始化控件时,会为 AllItems 中的每个项目调用 Data_Filter,并为每个项目正确设置 FilterEventArgs 的接受属性。但是,控件显示所有项目,而忽略 Data_Filter。在控件的实现中,ICollectionView 对象定义为:

这让我怀疑控件正在跳过我的视图。我可以尝试在控件的实现中实现过滤,但这不是一个好的解决方案。有什么建议么?

0 投票
1 回答
616 浏览

data-binding - Windows Phone 7 - “编写时过滤”功能的性能问题

我在实现一项功能时遇到了一些性能问题,其中列表框是实时过滤的,而用户正在将过滤器字符串键入文本框。我正在尝试创建的功能类似于 WP7 中的通话记录搜索。

我创建了一个简单的项目来测试它并复制粘贴下面的重要部分。基本上我有一个文本框,用户应该在其中编写一个字符串,用于过滤绑定到列表框的数据。这种过滤应该实时发生,而不是在点击任何类型的过滤按钮等之后。

ListBox 绑定到使用 ObservableCollection 作为源的 CollectionViewSource。当在文本框中输入内容时,该值会立即数据绑定到视图模型中的属性。View 模型属性的 setter 会触发 CollectionViewSource 的过滤,从而更新 ListBox 的内容。

在我正在做的实际项目中,ListBox 可以包含一百左右的项目。

这是相关的 XAML:

触发即时绑定到 ViewModel 属性的代码:

视图模型:

数据绑定到列表的项目类:

问题:

一切正常,但是在写入 TextBox 和更新 ListBox 之间有一个可怕的延迟。

我只是做错了吗?如果是这样,那么我应该如何改变我的方法?我认为这是很常见的要求,因此可能有一些不错的解决方案。

0 投票
1 回答
782 浏览

wpf - 将 FirstOrDefault() 与 CollectionViewSource 一起使用时出现未处理的异常?

我将实体绑定到 CollectionViewSource。然后我在后面的代码中查询。因为 id 字段是 PK 所以我认为我应该使用 FirstOrDefault() 让我的应用程序执行得更快。但它总是抛出一个异常......

XAML:

后面的代码:

它抛出一个未处理的异常:

但是当我从表达式树中省略 FirstOrDefault() 时,如下所示:

它运作良好!

那么为什么 FirstOrDefault() 会导致错误呢?
在这种情况下,我应该使用 FirstOrDefault(),如果我使用 FirstOrDefault(),我的应用程序会执行得更快吗?

ps:我正在设计一个编辑表单,所以我只想加载一个项目。

0 投票
1 回答
1444 浏览

c# - 将 MVVM 与 CollectionViewSource 一起使用

我正在尝试使用 CollectionViewSource 来显示一些数据,并且我看到的所有示例/教程都构建了一个自定义类,它们在另一个类中使用,该类继承自 ObservableCollection。我对使用 CollectionViewSource 都是新手,这只是我的第三个 MVVM 实现,所以我可能会误解编程模式,但我的问题是:我在哪里放置 ObservableCollection 类和/或自定义类?

我觉得他们应该进入模型,但是我不确定什么会绑定到视图。我是否只是将它们构建为外部类,然后在模型/视图模型中引用它们?

任何帮助表示赞赏

0 投票
1 回答
886 浏览

wpf - 如何在 VB.NET 中的 CollectionView 上使用多个过滤器

我正在尝试在 CollectionView 上使用多个过滤器 - 使用这种方法:http ://bea.stollnitz.com/blog/?p=32

我已经制定了将过滤器添加到我的 CollectionView 的语法

我现在想知道如何向我的 Filter 方法添加其他参数。

例如

是否可以使用删除门来做到这一点?不过我对它们不是很熟悉:

谁能指出我在 VB.NET 中添加多个 CollectionViewSource 过滤器和附加过滤器参数的正确方向?

谢谢本

0 投票
2 回答
2328 浏览

wpf - 如何在 CollectionViewSource 上实现多级排序

我最初将其发布为 LINQ 查询 - 让它工作,然后意识到我遇到了问题。您不能使用 LINQ 查询来选择/过滤和排序 CollectionViewSource 中的项目(为什么哦,为什么我不先检查这个,为什么哦,为什么这不可能?)。

所以,我现在正试图弄清楚如何对过滤后的 CollectionViewSource 进行排序。

我的 CollectionViewSource 绑定到 ObservableCollection(Of MediaItems)。MediaItems 包含一个子/嵌套列表(AdvertOptions)。

父 ObservableCollection(Of MediaItems) - 类的结构如下:

我正在过滤掉任何不符合以下条件的 MediaItem:

过滤 CollectionViewSource 后,我需要根据两个排序顺序对项目进行排序,以便可以使用 CollectionViewSource 导航方法(MoveCurrentToX 等)在我的应用程序中导航生成的 CollectionViewSource 项目。

我需要应用的排序顺序是:

  1. AdOptions.Priority(按降序排列)
  2. 按计数器(按升序)

我过滤的方式是使用这些函数:

仅供参考,我添加过滤器如下:

我现在需要弄清楚如何对过滤后的项目进行排序。问题是,CollectionViewSource 似乎对排序的支持有限。我可以使用以下方法轻松对 Counter 进行排序:

但这是我的次要排序 - 我想先按 AdOptions.Priority 排序(需要子选择正确的项目),然后按计数器。

我想知道创建组是否会有所帮助,但无法确定这是否会提供我正在寻找的排序功能。

我已经研究了转换为 ListCollectionView 而不是 CollectionViewSource,然后使用 CustomSort 的可能性,但我不知道如何实现这一点,以及它是否还能提供我正在寻找的功能,因为我的主要排序是嵌套列表中的值。

任何人都可以帮助我实现我的成果吗?

0 投票
1 回答
330 浏览

wpf - 您可以从 CollectionViewSource 中过滤单个项目吗

我想过滤出 CollectionViewSource 中的单个项目

我已经应用了其他过滤器,但我正在尝试找到一种方法来过滤掉单个项目,而不必调用遍历所有项目的函数。

这可能吗?