问题标签 [icollectionview]
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 datagrid icollectionview排序BUG?
也许有人可以帮助我?我有以下情况:
一个简单的看法:
/li>后面的代码:
/li>
程序启动后,数据网格包含(如预期的那样):
1
2
3
4
5
点击按钮后:
5
2
4
3
1
但我真的不明白为什么。我做错了什么还是这是一个错误?如果这是一个错误,是否有解决方法?
c# - 从 ICollectionView 中删除项目
如何在 c# 中从 ICollectionView 中删除项目?
谢谢
c# - 为什么 BindingListCollectionView 是密封的?
我有一个ICollectionView
接口扩展,允许我处理多选 ( IMultiSelectCollectionView
)。我想提供一个兼容BindingListCollectionView
但该类是密封的实现。有谁知道为什么做出这个设计决定?
wcf-ria-services - domaincollectionview中的自定义排序
我在视图模型中使用 DCV 作为属性。一切正常,但自定义排序呢?假设我的模型中有一个字符串属性,应该按字母数字排序。我怎样才能做到这一点?
升级版:
模型:
xml:
在数据网格中排序时,属性被排序而不考虑字母数字顺序,即以常规字符串方式。我想应用我的自定义排序,例如通过引入我自己的 IComparer。至少据我所知,没有可用的 API。有什么线索吗?
c# - 将 ICollectionView 转换为列表
我在 WPF、.NET 4.0 中的 DataGrid 控件上绑定 ICollectionView 的属性类型。
我Filter
使用ICollectionView
.
初始化 ICollection 视图:
我正在尝试解决这个问题:
例如,源数据计数为 1000 项。我使用过滤器,在 DataGrid 控件中我只显示 200 个项目。
我想将ICollection
当前视图转换为IList<Call>
wpf - 如何对 ObservableCollection 进行排序
我有一个 ObservableCollection 和一个 WPF UserControl 数据绑定到它。控件是一个图表,它为 ObservableCollection 中的每个 BarData 类型的项目显示一个垂直条。
现在我想根据 StartDate 对 ObservableCollection 进行排序,以便 BarData 在集合中按 StartDate 的递增顺序排列。然后我可以像这样计算每个 BarData 中 TotalMoneySpentTillThisBar 的值 -
我知道我可以使用 ICollectionView 对数据进行排序、过滤以进行查看,但这不会改变实际的集合。我需要对实际集合进行排序,以便可以计算每个项目的 TotalMoneySpentTillThisBar。它的价值取决于收藏品的顺序。
谢谢。
wpf - 以编程方式设置 ListView.SelectedItem 后箭头键不起作用
我有一个 WPF ListView 控件,ItemsSource 设置为以这种方式创建的 ICollectionView:
...其中 observableCollection 是复杂类型的 ObservableCollection。ListView 被配置为对每个项目仅显示复杂类型的一个字符串属性。
用户可以刷新 ListView,此时我的逻辑存储当前选定项的“密钥字符串”,重新填充底层 observableCollection。然后将前面的排序和过滤器应用到 collectionView。此时我想“重新选择”在请求刷新之前已选择的项目。observableCollection 中的项目是新实例,所以我比较了各自的字符串属性,然后只选择一个匹配的。像这样:
这一切都有效。如果选择了第 4 项,并且用户按 F5,则重新构建列表,然后选择与前第 4 项具有相同字符串属性的项。有时这是新的第 4 项,有时不是,但它提供了“最小惊讶行为”。
当用户随后使用箭头键在 ListView 中导航时,问题就出现了。刷新后的第一个向上或向下箭头会导致选择(新)列表视图中的第一个项目,无论之前的逻辑选择了哪个项目。任何进一步的箭头键都按预期工作。
为什么会这样?
这很明显违反了“最小惊讶”规则。我怎样才能避免它?
编辑
经过进一步搜索,这似乎与未回答的
WPF ListView 箭头导航和击键问题所描述的异常相同,但我提供了更多详细信息。
c# - 使用 ICollectionView 多次过滤集合
我正在尝试过滤显示在 DataGrid 中的 ObservableCollection。这第一次效果很好,但是当我再次尝试过滤时,它使用 sourcecollection 而不是过滤后的结果。短代码示例:
所以我想要做的是只过滤显示在我的 DataGrid 中的项目,而不是整个集合(当然,第一次使用过滤器时,它将使用整个集合)。
wpf - 快速执行和线程安全的可观察集合
ObservableCollection
s 为对它们执行的每个操作发出通知。首先,它们没有批量添加或删除调用,其次它们不是线程安全的。
这不会让他们变慢吗?我们不能有更快的选择吗?有人说ICollectionView
缠一个ObservableCollection
快?这种说法有多真实。
silverlight - 绑定到 ICollectionView 的 ComboBox 显示不正确的 SelectedItem
我在 Silverlight 4.0 中遇到了一对组合框的问题。
目的是让两个不同的组合框从同一个列表中读取,但是如果在一个列表中选择的任何项目都不会显示在另一个中(因为基础属性不允许相同)。
例如(这只是示例代码,但同样代表了它的工作方式)
为了允许这种动态过滤,我ICollectionView
的 ViewModel 中有 2 个不同的 ',每个组合框ItemsSource
都绑定到。每个ICollectionView
都有一个相同的来源,ObservableCollection<T>
但在过滤器中设置为过滤掉对方的选定项。
当 UI 中的 SelectedItem 发生更改时,ViewModel 属性会更新,作为其中的一部分,相反ICollectionView
的部分会通过.Refresh()
.
例如。
这允许过滤器重新运行并更改可供选择的内容。
这工作得很好,但有一个问题:
假设我们的主列表中有 3 种颜色:
- 蓝色的
- 绿色的
- 红色的
组合框 1 (CB1) 已选择蓝色 组合框 2 (CB2) 已选择绿色
因此组合框有这些列表(粗体被选中)
CB1
- 蓝色的
- 红色的
CB2
- 绿色的
- 红色的
如果我在 CB1 中选择Red,我希望Red将从 CB2 中删除,然后Blue替换它。这发生正确,但显示的值从Green变为Blue。
基础绑定值没有改变,并且 ICollectionView.CurrentItem 是正确的,但显示清楚地显示了错误的值。
我认为正在发生的事情是,因为格林在列表中较早,所以它与所显示的内容混淆了。如果您对 ICollectionView 进行排序,也会发生这种情况。
我已经尝试为更改组合框和选定项目重新提高属性更改事件通知,但这似乎不起作用。
有没有人见过这个问题或任何想法我可以解决它?