问题标签 [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.
wpf - 如何根据 WPF 中的组名称折叠/展开多个扩展器控件?
我想要实现的目标:折叠或展开在组样式中共享相同组名的所有扩展器。
我们有一个 ListBox 和另一个嵌套在其中的 ListBox 以显示子项。子项 ItemsSource 绑定到 CollectionView 并附加了组描述。
组项模板非常简单:
wpf - 在 DataTemplate 中绑定 CollectionViewSource
'ContentTemplate' 是一个 DataTemplate,它显示一个具有成员 'FooList'(一个 ObservableCollection)的对象。
我需要能够使用 CollectionViewSource 过滤该 FooList。这通常是直截了当的,但我似乎无法让绑定在 DataTemplate 中工作。我试图这样做:
我从中得到的错误是:
System.Windows.Data 错误:2:找不到目标元素的管理 FrameworkElement 或 FrameworkContentElement。绑定表达式:路径=FooList;数据项=空;目标元素是“CollectionViewSource”(HashCode=52991666);目标属性是“源”(类型“对象”)
在我看来,这听起来像是在 CollectionViewSource 上寻找“FooList”而不是绑定到 DataTemplate 的对象。
那么......我如何让这个看到正确的对象?
silverlight - Silverlight 的 CollectionViewSource 是线程安全的吗?
鉴于以下代码,我试图弄清楚这一点,刷新()是否需要在 UI 线程上发生?它似乎有效,我想知道 CollectionViewSource 是否实际上是一个线程感知/安全对象?它肯定具有支持调用正确线程的属性和方法,只是不确定这是否由开发人员决定,还是在对象内完成?
这个线程在 Silverlight 中是否安全???
或者你需要做这样的事情吗?
c# - 如何从 CollectionViewSource 获取项目计数?
我正在使用 CollectionViewSource 过滤列表框中显示的记录。xaml 如下。
这是我的代码隐藏(请不要介意这个代码隐藏,在实际应用程序中,我在这个场景中使用了最好的 MVVM)。
问题: 我在编写“SetSummary”方法时需要帮助,其中我可以从 CollectionViewSource 对象中获取“initialCount”和“filteredCount”。
感谢您的关注。
.net - CollectionViewSource 和排序(丹麦语字母表)
我想对一些具有 Name 属性的对象进行排序。这些对象存储在 CollectionViewSource 中。我通过以下方式添加排序描述:
其中方向是升序/降序。除一种情况外,一切正常。在丹麦字母表中,当我使用例如名称:Aarhus 或 Aabenra 时,它应该在“Z”之后。因此,当我有以下名称时:Silkeborg、Aarhus、Aabenraa、Odense 应按如下方式排序:
- 欧登塞 Silkeborg Aabenraa 奥胡斯
但是,目前它的排序如下:
- Aabenraa 奥胡斯 欧登塞 Silkeborg
我试图在每次排序之前更改文化信息,但它不起作用。SQL Server 2005 对这些值进行正确排序。
wpf - 在 ComboBox 中对项目进行分组
我有一个 ListView 包含两种类型的对象,单个和多个。单个是普通的 TextBlock,而多个是带有项目的 ComboBox。
我正在尝试将 ComboBox 中的项目分组但没有成功。是否可以?还是我应该采用不同的方法?
我想要达到的目标:
wpf - CollectionViewSource 仅在第一次绑定到源时排序
我正在使用绑定到 CollectionViewSource ( players ) 的 DataGrid,它本身绑定到 ListBox ( levels ) 的当前选定项,每个项都包含要在 DataGrid 中排序/显示的集合:
...
...
(这里是整个 C# 代码,这里是 XAML 代码,这里是整个测试项目- 除了 DataGrid,我还为玩家添加了一个简单的 ListBox,以确保它不是 DataGrid 问题)
问题是播放器在第一次显示时已排序,但是一旦我从 ListBox 中选择另一个级别,它们就不再排序了。此外,在第一次显示玩家时修改名称将根据更改对它们进行排序,但一旦级别更改就不再如此。
所以看起来改变 CollectionViewSource 的来源以某种方式破坏了排序功能,但我不知道为什么,也不知道如何修复它。有谁知道我做错了什么?
(我用过滤器做了一个测试,但那个过滤器一直按预期工作)
该框架是.NET 4。
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):
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 将其ItemSource
Property 设置为 a CollectionViewSource
,其基础源基于上面ObservableCollection<T>
填充的内容LoadData()
。
请注意,在 MainPage.xaml.cs 中,为上节中的Filter
属性分配了一个过滤器处理程序,该处理程序筛选那些已设置为 true 的项目:CollectionViewSource
Resources
IsSelected
另请注意,在加载数据后,我立即获取CollectionViewSource
并将其数据源设置为ObservableCollection<T>
列表,以便有可以进行过滤的基础数据。
当应用程序加载时,数据按预期显示,其中那些为 true 的项目ObservableCollection<T>
显示IsSelected
在第二个 Pivot 中:
您会注意到我取消了应用程序栏图标的注释,其中第一个在单击时切换了IsSelected
最后一项的属性ObservableCollection<T>
(请参阅 MainPage.xaml.cs 中的最后一个函数)。
这是我的问题的症结所在- 当我单击适用的栏图标时,我可以看到列表中的最后一项的IsSelected
属性设置为 true,但是第二个 Pivot 不显示此更改的项。我可以看到NotifyPropertyChanged()
处理程序正在对该项目进行触发,但是该集合并没有发现这一事实,因此 Pivot 2 中的列表框不会更改以反映应该有一个新项目添加到集合中的事实。
我很确定我在这里遗漏了一些非常基本/基本的东西,但是如果做不到这一点,有没有人知道获得该系列的最佳方式,并且它是一起愉快玩耍的基础项目?
我想这个问题也适用于排序和过滤((从某种意义上说,如果 aCollectionViewSource
基于排序,那么当排序中使用的项目的属性发生变化时,集合的排序顺序应该反映为出色地))
wpf - 实体框架 4 - 按外国实体排序
我明白了
当我使用以下 CollectionViewSource 时:
DataContext 是一个ObservableCollection<Course>
. 我正在使用 Entity Framework 4,CourseSessions 是 Course 的一个属性:
在这种情况下,我如何指定排序,而不是对来自数据库的数据进行排序?