问题标签 [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 回答
598 浏览

wpf - 获取 CollectionViewSource 组行?

我在 WPF ListBox 中显示一些日期

在每个组标题上,我需要显示一些关于它的数据:

如何获取与当前组关联的 ParentID?

安吉拉

0 投票
2 回答
5198 浏览

.net - 仅在 XAML 中更改列表视图排序属性/方向

我有一个简单的ListView,想按数字或字母顺序,升序或降序对内容进行排序。选择来自下拉框。我知道我可以使用它CollectionViewSource来实现排序,但我怎样才能动态更改 SortDescription 或方向?

更新:

好的,所以我已经像这样设置了我的 CVS,viewModel 是 ListView 当前绑定的。我要求将 PropertyName 绑定到当前选定的组合框项的 property PropertyName。组合框绑定到一个自定义列表,该列表公开我想要排序的属性名。

它抱怨我试图使用的 PropertyName:

不能在“SortDescription”类型的“PropertyName”属性上设置“绑定”。只能在 DependencyObject 的 DependencyProperty 上设置“绑定”。

0 投票
1 回答
1396 浏览

wpf - 列表框中的数字字符串排序

我有一个 ListBox,其中 ItemSource 绑定到CollectionViewSource. CVS 源是一个XmlDataProvider. 所以 ListBox 列出了我指定的所有节点(名称属性)。现在这些节点具有属性,我希望 ListBox 由它们排序。问题是,由于底层数据是 xml,每个值(节点的属性)都是一个字符串,但有些值表示数值。由于排序CollectionViewSource.SortDescriptions.add (...)将按字母顺序对这些(字符串)值进行排序,因此 2,10,5 的序列将被排序为 10,2,5 而不是 2,5,10。我该如何解决这个问题?

如果解决方案存在于 ListView 的 CustomSort 中,有人可以为我提供一个快速示例,说明如何使用底层 XmlDocument 来实现这一点吗?

我认为这就像编写一个实现 IComparer 的类一样简单,但不知何故我迷路了。我想将属性的名称传递给方法,所以我可以从 CVS 中“提取”所有这些属性,将它们转换为浮点数(在这种情况下)并使用标准函数对它们进行排序......但我完全迷失了老实说,这个 CustomSort 是如何工作的......

希望这在不放弃 XmlDocument 的情况下是可能的,因为它是一种给定的 :)

问候

0 投票
2 回答
1224 浏览

c# - CollectionViewSource 初始化引发列表框的 SelectionChanged

可能是我错过了一些东西,但我已经用这个打败了我的头。

我已经定义了 CollectionViewSource:

和列表框:

另外,我有代码隐藏 packagesViewSource 初始化:

和线

涉及事件

你可以猜到

那里。

我做错了什么?

0 投票
1 回答
7978 浏览

wpf - 如何创建 WPF ListCollectionView 对 DataGrid CollectionViewSources 进行排序

这是我的 CollectionViewSources:

我目前有以下控件相互提供数据:

我的窗口的 DataContext 是通过一个包含我所有控件的网格提供的:

组合框:

一个列表框:

最后,我试图使其可排序的 DataGrid :(现在只有一列):

到目前为止,我的确切代码是:

我已阅读并理解创建 ListCollectionViews 以处理 CollectionViewSource 中包含的排序属性的重要性,我从博客Bea Stollnitz 的博客中获得了该属性。

但是,我不断收到错误消息 Null Reference Exception Unhandled: “Object reference not set to an instance of the object.”

我该如何处理这个问题?我是否需要进一步定义我的 ListCollectionView,或者我需要建立一个 ICollectionView?我的 PartNum 列包含以数字开头的零件编号,有时还包含字母。标准的排序方向是否适用?

0 投票
4 回答
8644 浏览

c# - 使用 CollectionViewSource 实现 ListView - 不刷新?

我正在设置一个 ListView,它的Source属性设置为我的一个类的 ivar,称为Cat.

每个Cat都有一个ObservableCollection对象Trait

然后我将Source属性分配给这个Traits集合:

这可以正常工作,并且Trait对象正确显示在我的ListView.

问题是对该基础_traits集合的更改不会导致 UI 正确更新。例如,这个:

在 UI 中似乎没有立即Source产生任何影响,但是如果我像这样重置属性:

然后ListView正确更新。但是,我确定一定有一些我遗漏的东西,因为我希望 UI 在添加/删除项目时更新。

编辑:正在CollectionViewSource应用于ListView我的 XAML 文件中:

0 投票
1 回答
749 浏览

c# - CollectionViewSource 动态排序

我有一个具有各种属性的汽车类。

我有一个静态 Cars 集合类,为简单起见,我在其中定义了一堆汽车项目,我可以通过对象数据提供程序在 XAML 中提供这些项目。

我在 XAML 中定义了一个集合视图源,它成功地绑定到我的 ObjectDataProvider。

我有一个显示集合的列表框。

我按照所有标准教程中的建议将排序添加到 CVS,并且一切正常。

我的问题:假设我想对不同的字段进行排序。当然,有一种方法可以改变这一点,而无需将代码提供给客户。所以我实现了一个组合框。

我使用以下代码将 Car 类中的属性列表加载到组合框中,但我不只是获取属性列表。我也得到了他们的数据类型。我不想要这个。

结果(组合框中显示的内容):

我的目标是将属性名称加载到组合框中。然后使用选定的属性名称来构建一行代码,例如:

ComboBox.SelectedItem.ToString() 将包含要排序的属性的名称。

那么如何去掉属性名前面的数据类型我知道我可以将各种杂乱的加载到另一个列表中,然后进行一堆字符串处理,从右边开始寻找第一个空格并在此之前切掉所有内容但肯定有更简单的方法。

实际上,我想要做的是让用户对 Car 类的不同属性进行排序(所以我需要在某处加载属性并使它们可供用户选择,因此是组合框)。我要问的是,必须有一种简单的方法来获取属性列表,而无需所有字符串操作代码,并且希望没有太多反射(除非我已经在不知道的情况下使用它),因为这似乎是一个非常基本的要求。

提前感谢您的帮助!

0 投票
1 回答
1232 浏览

c# - 从 CollectionViewSource C# 中删除排序

我有一个 Collection View Source (CVS) 实现,就像你在 MSDN 或许多教程中看到的那样。在我的例子中,一个 Car 类和一个通过 Object Data Provider (ODP) 在 XAML 中显示的 Cars Collection 类 CVS 与此相关联。这一切都很好。

我添加了一个排序,然后最终进入了一个允许用户选择 Car 类的属性进行排序的阶段。

接下来我想添加一个二级排序。我的问题不是添加排序,而是删除它。我的问题是这个。在我的代码中,除非首先存在主排序,否则不会发生二级排序(二级控制被禁用)。可以说确实如此,现在如果我进行二次排序,它可以工作,但是如果我选择另一个属性进行排序,则什么也不会发生。这是因为添加了第三个排序,如果我选择另一个属性,则没有任何反应(添加了第四个排序,依此类推)。

在添加下一个辅助排序之前,我无法在任何地方找到可以让我删除最后应用的辅助排序的语法。

鉴于只有两个项目 - 主要排序 [0] 和次要排序 [1],我应该能够使用如下代码:

但这不起作用,甚至清空我的选择项组合框(不是我的实际问题)。

我正在尝试这样的事情:

从我知道存在的源中删除一个实际项目,因为从辅助组合框中选择它时它被放在那里。但是,虽然这应该有效,但由于某种原因它不是。

下面是我的一些代码:

基本上我正在寻找我需要首先删除以前的二级排序,然后添加一个新的代码,因此集合视图源中总是只有两种排序。如果我要扩展它以允许第三、第四或任何其他级别的排序,那么列表中总是只有那个数量的项目。但是,由于我设置它的方式,除非首先存在第二级,否则第三级不能存在。所以不能混为一谈。

任何关于如何实现这一点的想法都会受到赞赏。

0 投票
1 回答
1305 浏览

c# - 是否可以通过 sql server 数据库中的表中的多个字段或列过滤我的 collectionview

在下面的代码中,我只能根据表格中的姓氏列进行过滤,我可以使用多个表格列进行过滤吗?

0 投票
1 回答
1354 浏览

c# - 将命令绑定到位于 ListView 内的上下文菜单中的 viewModel

我正在尝试将上下文菜单项绑定到我在 ViewModel 中定义的命令。上下文菜单位于我也绑定到 CollectionViewSource 的 ListView 内,我认为这是问题的原因。

我已设法将 listView 集合中的选定项绑定到我的 ViewModel,但是当我尝试使用相同的方式将上下文菜单项命令绑定到我的 ViewModel 时,它不起作用。我希望任何人都有时间阅读下面的所有代码,并让我了解我做错了什么。

附言。为了不泄露应用程序的内容,我不得不更改一些名称。

在我的 ViewModel 中,我定义了以下内容:

然后在我的视图中,我设置了一个 ListView,如下所示:

CollectionViewSource 定义如下: