问题标签 [listcollectionview]

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

c# - IComparer & 对 ListCollectionView 的多个级别进行排序

出于性能原因,我将 aListCollectionView与一个CustomSort排序器一起使用,而不是多个SortDescriptions.

使用SortDescriptions,按多个级别对数据进行排序是相当容易的,但我坚持对IComparer下面的 , 做同样的事情。

目的是将所有Favorite( bool) 分组在顶部,在所有收藏夹中,按Count( int) 排序,最后按Name( string) 排序。

我目前的IComparer实现:

我的理由是:如果a不大于bFavorite那么检查它Count,最后检查Name

不幸的是,上面的IComparer实现并没有产生预期的结果——排序无处不在。

它应该如下所示:

任何指向正确方向的指针将不胜感激。

0 投票
2 回答
1484 浏览

c# - WPF Datagrid:更改数据后,ListCollectionView 排序似乎不起作用

DataGridItemsSource是 a ListCollectionView,它有 aGroupDescription和两个SortDescriptions。在程序第一次运行时,一切正常。

但是,当ListCollectionView基于的数据发生更改时,排序ListCollectionView失败(而Grouping没有)。它的行为就好像标记为“LINE A”和“LINE B”的两条线根本不存在。

总结一下:

在启动时,一切看起来和行为都像它应该的那样。更改数据,将其保存到DataBase并再次检索它也可以工作。仅对检索到的分组数据进行排序将不起作用(列表按 MyModel 类的第一个属性(即 MyModelName ...而不是 MyModelSupplier 排序 - 就像默认值一样),而不是像一开始那样) .

编辑: 这是一个已知的错误/缺失功能(直到 .NET 4.6.2)。可以在这里找到几个建议(我选择了最后一个解决方案):

错误报告:https ://connect.microsoft.com/VisualStudio/feedback/details/2017716/wpf-live-shaping-groups-are-not-sorted-correctly-after-a-property-changes

简单修复:https ://stackoverflow.com/a/10121983/8187945

0 投票
2 回答
379 浏览

c# - 匹配列表集合中的值和 C# 中 DataTable 行中的值

美好的一天编码员

我想知道是否有一种方法可以将列表集合中的值匹配到数据表行。目前我有这个,那不起作用。Ref_Number是列表集合并且dtRefNumDataTable

0 投票
2 回答
188 浏览

c# - 集合与 ListCollectionView 索引

我有一个 ValueConverter,它构建了一个曾经有 observableCollection 的数据透视表

在这个转换器中,我将绑定设置为:

现在我的问题是绑定以前可以正常工作,路径如下所示:

但是我已经将 ObservableCollection 更改为 ListCollectionView 所以这个:

变成了这样:

现在这不再起作用了:

您不能像这样在 ListCollectionView 上使用索引(索引器),但是如何使用 Indexer 然后在 ListCollectionView 上绑定到正确的项目?

0 投票
0 回答
110 浏览

wpf - 如何在具有 CompositeCollection 作为项目源的 wpf DataGrid 上设置分组?

我正在使用 c# 和 WPF。我有一个需要绑定到多个数据源的 WPF DataGrid。我所做的是为每个数据源创建以下代码:

'myCompositeCollection' 是我的网格项目来源。我无法创建一个列表,因为数据源来自不同的实体,我不想处理每个可观察集合的添加/删除/更新/重置。

但是,每个不同的数据源都应该在网格中的不同组中。如何添加一个分组(甚至是自定义实现)而不是 ICollectionView 的常规“GroupDescriptions”,它在 CompositeCollections 上不起作用?

谢谢。

0 投票
1 回答
395 浏览

c# - 使用 CustomSort 时重置 SortDescriptionCollection

这是我第一次(字面上)使用 C# 和 WPF。所以我希望我遇到的问题是一些我不知道的基本而简单的问题。

我的 ListCollectionView 有什么方法可以在 CustomSort 之后保留其 SortDescriptions?

这是具有我需要的行为的原始代码:

基本上,在这种情况下,如果用户按下 shift 进行多列排序,它会将 sortedColumnDescription 添加到 SortDescriptions,如果我检查 SortDescriptions 计数,它将等于我正在排序的列数。

输出如下:

但是我需要实现一个 CustomSort,所以我所做的只是在 else 语句之后添加一行:

目标是我将 SortDescriptions 集合传递给我的 CustomSort,它会弄清楚如何处理这一切。但由于某种原因,现在只有一行给了我以下输出:

我尝试存储 SortDescriptions,然后在 CustomSort 之后重新添加它们,但这会触发 listcollectionview 上的默认排序行为,这会破坏我所做的自定义排序。

谢谢

0 投票
1 回答
323 浏览

c# - 多列 ListCollectionView 上的 CustomSort

作为 C# 的新手,我刚刚发现 CustomSort 清除了 SortDescriptions,现在我有点纠结于如何允许对我的数据网格进行自定义多列排序。

你可以在我之前的问题中看到我的代码

我试图弄清楚的特定行是:

在我的 IntegerSort 自定义排序中,我正在检查 SortDescriptions 是否包含多列,如果是,则相应地执行多列排序。然而,这依赖于这样一个事实,即每次用户在列上执行 shift+单击时,都会将排序描述附加到 ListCollectionView。这是行不通的,因为它在我每次自定义排序后都会重置。

是否有任何已知的解决方法?使用自定义排序进行多列排序的正确方法是什么?

非常感谢。

0 投票
1 回答
362 浏览

c# - INotifyDataErrorInfo ErrorsChanged 不适用于绑定到 ListCollectionView 的 UI 元素

此 XAML 元素绑定到我的视图模型中的 ListCollectionView:

ListCollectionView 是这样定义的:

并初始化:

在验证 AirframeCollectionView/TypeName 时,我使用的是 INotifyDataErrorInfo 接口,因此:

为了引发错误,我一直在这样做:

但是,这不会触发 UI 中的错误响应。我将属性名称从“AirframeCollectionView/TypeName”更改为“TypeName”,但这也不起作用。在调试器中,我确认validationErrors 加载了错误,并且ErrorsChanged 是使用提供的属性名称触发的。

请注意,当我在模型而不是 ViewModel 中实现 INotifyDataErrorInfo 时,这一切正常,但出于各种原因,我希望实现在 ViewModel 中。

问题

设置 DataErrorsChangedEventArgs 并触发 ErrorsChanged 时,我必须使用什么属性名称格式?或者我这里还有其他结构性问题吗?

0 投票
4 回答
537 浏览

c# - 如何在 C# 中将列表与 WPF 数据网格绑定?

我似乎无法弄清楚如何将数据从 wfp 获取到列表中并绑定到数据网格。

xaml 表单显示正常

我已经创建了属性,我创建了一个类来继承基类 code360。我在网上尝试了很多资源,但不适合我。我试图对输入进行硬编码,以查看它是否会填充网格,但没有办法。像这样

这是 mainWindow.xaml.cs

这是 mainWindow.xaml

0 投票
0 回答
320 浏览

c# - 带有 ItemTemplate 的 WPF 可搜索组合框

我有一个带有 Itemssource 的 ComboBox 绑定到 VM 上的 ListViewCollection。ListViewCollection 过滤一个ObservableCollection<ItemVM>

ItemVM 有一个属性 DisplayText,它将显示在组合框中。

ComboBox Text 绑定到用于 ListCollectionView 过滤器的字符串类型 VM 上的 SearchString 属性。

我希望对我的 ItemVM 进行模板化,以便根据 ItemVM 上的属性值以红色文本显示一些项目。

我遇到的问题是我不能同时使用 DisplayPathName 和 itemstemplate。

Itemstemplate 处理类型 ItemVM 但搜索字符串是字符串。这会导致文本有时是类名而不是实际值。

如果我使用字符串而不是 ItemVM 它会起作用(但是我将没有属性来触发颜色更改)。当项目不是字符串类型时,制作可搜索(过滤下拉)组合框的解决方案是什么?