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

wpf - 如何根据 WPF 中的组名称折叠/展开多个扩展器控件?

我想要实现的目标:折叠或展开在组样式中共享相同组名的所有扩展器。

我们有一个 ListBox 和另一个嵌套在其中的 ListBox 以显示子项。子项 ItemsSource 绑定到 CollectionView 并附加了组描述。

组项模板非常简单:

0 投票
3 回答
6939 浏览

wpf - 在 DataTemplate 中绑定 CollectionViewSource

'ContentTemplate' 是一个 DataTemplate,它显示一个具有成员 'FooList'(一个 ObservableCollection)的对象。

我需要能够使用 CollectionViewSource 过滤该 FooList。这通常是直截了当的,但我似乎无法让绑定在 DataTemplate 中工作。我试图这样做:

我从中得到的错误是:

System.Windows.Data 错误:2:找不到目标元素的管理 FrameworkElement 或 FrameworkContentElement。绑定表达式:路径=FooList;数据项=空;目标元素是“CollectionViewSource”(HashCode=52991666);目标属性是“源”(类型“对象”)

在我看来,这听起来像是在 CollectionViewSource 上寻找“FooList”而不是绑定到 DataTemplate 的对象。

那么......我如何让这个看到正确的对象?

0 投票
1 回答
388 浏览

silverlight - Silverlight 的 CollectionViewSource 是线程安全的吗?

鉴于以下代码,我试图弄清楚这一点,刷新()是否需要在 UI 线程上发生?它似乎有效,我想知道 CollectionViewSource 是否实际上是一个线程感知/安全对象?它肯定具有支持调用正确线程的属性和方法,只是不确定这是否由开发人员决定,还是在对象内完成?

这个线程在 Silverlight 中是否安全???

或者你需要做这样的事情吗?

0 投票
6 回答
28356 浏览

c# - 如何从 CollectionViewSource 获取项目计数?

我正在使用 CollectionViewSource 过滤列表框中显示的记录。xaml 如下。

这是我的代码隐藏(请不要介意这个代码隐藏,在实际应用程序中,我在这个场景中使用了最好的 MVVM)。

问题: 我在编写“SetSummary”方法时需要帮助,其中我可以从 CollectionViewSource 对象中获取“initialCount”和“filteredCount”。

感谢您的关注。

0 投票
1 回答
213 浏览

.net - CollectionViewSource 和排序(丹麦语字母表)

我想对一些具有 Name 属性的对象进行排序。这些对象存储在 CollectionViewSource 中。我通过以下方式添加排序描述:

其中方向是升序/降序。除一种情况外,一切正常。在丹麦字母表中,当我使用例如名称:Aarhus 或 Aabenra 时,它应该在“Z”之后。因此,当我有以下名称时:Silkeborg、Aarhus、Aabenraa、Odense 应按如下方式排序:

  • 欧登塞 Silkeborg Aabenraa 奥胡斯

但是,目前它的排序如下:

  • Aabenraa 奥胡斯 欧登塞 Silkeborg

我试图在每次排序之前更改文化信息,但它不起作用。SQL Server 2005 对这些值进行正确排序。

0 投票
1 回答
26107 浏览

wpf - 在 ComboBox 中对项目进行分组

我有一个 ListView 包含两种类型的对象,单个和多个。单个是普通的 TextBlock,而多个是带有项目的 ComboBox。

我正在尝试将 ComboBox 中的项目分组但没有成功。是否可以?还是我应该采用不同的方法?

我想要达到的目标:

0 投票
3 回答
10905 浏览

wpf - CollectionViewSource 仅在第一次绑定到源时排序

我正在使用绑定到 CollectionViewSource ( players ) 的 DataGrid,它本身绑定到 ListBox ( levels ) 的当前选定项,每个项都包含要在 DataGrid 中排序/显示的集合:

...

...

(这里是整个 C# 代码,这里是 XAML 代码,这里是整个测试项目- 除了 DataGrid,我还为玩家添加了一个简单的 ListBox,以确保它不是 DataGrid 问题)

问题是播放器在第一次显示时已排序,但是一旦我从 ListBox 中选择另一个级别,它们就不再排序了。此外,在第一次显示玩家时修改名称将根据更改对它们进行排序,但一旦级别更改就不再如此。

所以看起来改变 CollectionViewSource 的来源以某种方式破坏了排序功能,但我不知道为什么,也不知道如何修复它。有谁知道我做错了什么?

(我用过滤器做了一个测试,但那个过滤器一直按预期工作)

该框架是.NET 4。

0 投票
1 回答
1279 浏览

wpf - 添加新行后,为什么我的绑定控件没有更新?

我正在使用 wpf 拖放数据绑定到数据集。我使用 BindingListCollectionView 的 AddNew 方法生成了一个新的数据表行。我在新行上设置值并在 BindingListCollectionView 上调用 CommitNew。我希望在绑定控件中看到我分配的值,但它们都是空白的。如果我将更改保存到数据库,则控件会被更新,但我希望用户在调用 TableAdapterManager 上的 UpdateAll 之前查看我分配的值。

背景:
我在与我的 wpf 应用程序分开的项目中创建了一个强类型数据集。我的 wpf 应用程序引用了数据集应用程序。我在 wpf 应用程序中添加了一个指向类型化数据集的对象数据源。我将字段/控件从数据源窗口拖到 wpf 设计器窗口。生成的 xaml 包含一个 Window.Resources 部分,其中 CollectionViewSource 准确绑定到我的数据集和数据表。这个 CollectionViewSource 是我拖到设计图面的控件的 DataContext。所有控件都使用 TwoWay 数据绑定。

当窗口加载时,我获取对 xaml 的 CollectionViewSource 的引用(使用 FindResource)。然后我获取对 CollectionViewSource 的 view 属性的引用并将其转换为 BindingListCollectionView。现在我使用 BindingListCollectionView 的 AddNew 方法生成一个新行(AddNew 作为对象返回)。我将对象转换为 DataRowView 并访问它的 Row 属性。然后我将该行转换为强类型数据表行(由 DataSet 设计器生成)。现在我将值分配给一些数据表行列。我在 BindingListCollectionView 上调用 CommitNew。最后,我在 CollectionViewSource 上调用 MoveCurrentToFirst。

问题:
使用监视表达式我可以看到数据在 CollectionView 和 BindingListCollectionView 的 SourceCollection 中。谁能解释为什么绑定控件不显示数据,除非我将更改保存到数据库?

代码(未显示生成的 XAML):

0 投票
2 回答
6371 浏览

silverlight - 当单个项目的属性更改时,如何自动更新 CollectionViewSource 上的过滤器和/或排序顺序?

好的,所以这个问题与 Windows Phone 7/Silverlight(更新 WP7 工具,2010 年 9 月)有关,专门过滤底层ObservableCollection<T>.

在使用 WP7 模板 Pivot 控件应用程序时,我遇到了一个问题,即更改 中的基础项目ObservableCollection<T>不会导致屏幕上的 ListBox 被更新。基本上,示例应用程序有两个枢轴,第一个直接绑定到底层ObservableCollection<T>,第二个绑定到 a CollectionViewSource(即,表示底层上的过滤视图ObservableCollection<T>)。

添加到ObservableCollection<T>implement的底层项目INotifyPropertyChanged,如下所示:

然后,在主类中,编制了一个数据集合(为简洁起见减少了列表,还请注意,与其他项目不同,三个 LoadData() 条目具有 IsSelected == true):

在 MainPage.xaml 文件中,第一个 PivotItemSource直接基于ObservableCollection<T>列表。在第二个 Pivot 中,屏幕上的 ListBox 将其ItemSourceProperty 设置为 a CollectionViewSource,其基础源基于上面ObservableCollection<T>填充的内容LoadData()

请注意,在 MainPage.xaml.cs 中,为上节中的Filter属性分配了一个过滤器处理程序,该处理程序筛选那些已设置为 true 的项目:CollectionViewSourceResourcesIsSelected

另请注意,在加载数据后,我立即获取CollectionViewSource并将其数据源设置为ObservableCollection<T>列表,以便有可以进行过滤的基础数据。

当应用程序加载时,数据按预期显示,其中那些为 true 的项目ObservableCollection<T>显示IsSelected在第二个 Pivot 中:

替代文字 替代文字

您会注意到我取消了应用程序栏图标的注释,其中第一个在单击时切换了IsSelected最后一项的属性ObservableCollection<T>(请参阅 MainPage.xaml.cs 中的最后一个函数)。

这是我的问题的症结所在- 当我单击适用的栏图标时,我可以看到列表中的最后一项的IsSelected属性设置为 true,但是第二个 Pivot 不显示此更改的项。我可以看到NotifyPropertyChanged()处理程序正在对该项目进行触发,但是该集合并没有发现这一事实,因此 Pivot 2 中的列表框不会更改以反映应该有一个新项目添加到集合中的事实。

我很确定我在这里遗漏了一些非常基本/基本的东西,但是如果做不到这一点,有没有人知道获得该系列的最佳方式,并且它是一起愉快玩耍的基础项目?

我想这个问题也适用于排序和过滤((从某种意义上说,如果 aCollectionViewSource基于排序,那么当排序中使用的项目的属性发生变化时,集合的排序顺序应该反映为出色地))

0 投票
1 回答
408 浏览

wpf - 实体框架 4 - 按外国实体排序

我明白了

当我使用以下 CollectionViewSource 时:

DataContext 是一个ObservableCollection<Course>. 我正在使用 Entity Framework 4,CourseSessions 是 Course 的一个属性:

在这种情况下,我如何指定排序,而不是对来自数据库的数据进行排序?