问题标签 [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 - Silverlight 和 WPF 的 ICollectionView
有谁知道 Silverlight 和 WPF 中是否存在从 ICollectionView 继承的通用对象?
还是我只需要创建自己的版本?
silverlight - 对 ICollectionView 进行排序或过滤时,无法将新项目添加到 Silverlight DataForm
我在 Silverlight 4 页面上有一个 DataForm。我将它绑定到下面类的视图。我可以使用 DataForm 中内置的控件添加、删除、编辑和向前/向后移动记录。但是,一旦我删除了 Filter 或 SortDescription 的注释,那么每次我按下 Add + 按钮时,我都会收到可怕的“当项目有验证错误或正在编辑且 AutoCommit 为 false 时无法更改货币”错误。我已经坚持了好几个小时了,一点头绪都没有。
我尝试使用代码手动添加数据 - 而不是 DataForm - 即使同时指定了过滤器和排序,它也能正常工作。
为什么它可以通过代码而不是通过 DataForm 工作?为什么 DataForm 在没有指定过滤器时可以工作,但在指定始终返回 true 的无操作过滤器时会失败?
c# - 最初在 ListView 中隐藏元素(使用 ICollectionView 和 ObservableCollection)
我正在使用绑定到 ICollectionView (ListCollectionView -> ObservableCollection) 的 ListView 在加载包含数据的文件时,集合被填充。每个数据项都有一个布尔标志,指示它是必须显示在列表视图中还是必须隐藏。
目前我以一种丑陋的方式做到了这一点。我首先用数据填充集合(列表视图)。用户可以看到这一点。填充它后,我开始一个例程过滤(ICollectionView.Filter)不匹配的项目。在那一刻,列表视图项目数减少了。
有没有更好的方法来实现这一点?
wpf - 使用通知 ICollectionView 更新 BindableCollection 中的项目
嗨,我在视图中的 ListBox 控件上绑定了来自 Caliburn Micro 的集合。就这个。
ListBox 项目是 UserInfo 的类型。
嗨,我对列表框项目进行排序和分组,为此我使用 CollectioView。
当我初始化 ListBox 时,我使用此方法对项目进行排序和分组。
TextStatus 和 Nick 是 userInfo 类的属性。
当我更新可绑定集合 Friend 中项目的值时,我想有一种方法如何通知集合视图有关此更改。因为我需要将项目移动到正确/好组。
例如
我在网上改变价值;
在这里我想通知集合视图(_currentView)关于朋友集合的变化。
wpf - WPF绑定到当前项的子项未更新
我目前正在使用 ICollectionView myCollectionView 绑定到 ObservableCollection。该集合的内容是从 ComboBox 中选择的。每个集合项 myCollectionItem 都有一个 VisualBrush myVisualBrush 作为子项,并且 CurrentItem 的画笔显示在预览面板中。
集合项也是一个子对象 myItemChild,其中包含许多用于生成滑块的自己的属性。此滑块会更改预览面板上的属性。
这一切都按预期工作。
当 Collectionview 的 CurrentItem 更改时,预览面板会正确更新,但滑块会继续显示上一个 CurrentItem 的 myItemChild。
没有提出对 myItemChild 的更改,我应该如何处理这种情况?
很可能我错过了一些明显的东西,所以任何指针都表示赞赏。
问候
抢
wpf - WPF Prism 4 单元测试
我一直在使用 Prism 4 创建复合 wpf 应用程序,现在我想开始测试该应用程序。使用单元测试和最小起订量,我已经通过 StockTrader RI 示例工作,并尝试构建我的应用程序尽可能接近 RI 实现,我没有使用控制器和演示部分来保持简单,因此只有一个 View a视图模型。
我对如何在其中测试我的 ViewModels 和 CollectionViews 有点迷茫,是否有一些关于 Prism4 中的单元测试的教程,您知道这些教程只是为了展示绳索。
wpf - WPF TreeView ICollectionView 删除过滤器
我有一个深度不同的 WPF TreeView。我的应用程序还可以在树内进行搜索。这是通过使用 ICollectionView 接口的 Filter 属性来完成的。搜索和过滤一切正常,但问题出在我尝试删除过滤器时。
我有以下情况;我输入搜索条件并过滤树视图并显示结果。现在,当我按下按钮清除过滤器时,过滤器被删除,但问题是它只显示我之前搜索的子节点而不显示其他节点的子节点,这些节点也无法展开了。
我的搜索函数递归地遍历树并测试输入的搜索文本的每个节点。
我是否必须应用 view.Filter = null; 每个节点及其子节点的声明?
谢谢,
授予
wpf - WPF:ICollectionView - 如果项目包含在另一个列表中,则过滤一个列表?
基本上,我有 2 个 ListView,每个绑定到不同的ItemsSource
.
列表 1不能更改(它是 a ReadOnlyObservableCollection
)。
清单 2可以更改(通过用户交互)。
我需要在列表 1 中添加一个过滤器,这样它就不会显示在列表 2 中找到的任何内容。这是我目前的代码...
List2.ItemsSource 以 IEnumerable 而不是 ObservableCollection (实际上是什么)的形式返回。我想尽可能有效地做到这一点,所以我不确定我是否应该:
- 将 ItemsSource 显式转换为 IList 以获得对 Contains 的访问权限?
- 自己遍历 ItemsSource 看它是否包含该项目?
- 使用 LINQ 的 Cast 扩展方法强制转换为 IList(或其他类型)以获得对 Contains 的访问权限?
- 还有什么办法吗?
更新:
第一次渲染后,它似乎没有继续过滤项目:
更新 2:
我想我明白为什么它没有重新应用过滤器。原始集合没有引发 CollectionChanged 通知,因此它不会费心再次运行过滤器。也许解决这部分更适合作为不同的问题?但是,如果有人想在这里回答它:
当 List2 集合更改时,如何让我的 List1 重新应用过滤器?
更新3:我在一个单独的SO问题 中询问了如何与collectionchanged事件联系起来并得到了我的答案。
wpf - WPF - ICollectiView SortDescriptions - 按字符串排序但忽略 nullorwhitespace?
基本上,我有一个项目集合。我想对 String 属性进行排序。问题是当我升序时,任何空字符串都会显示在列表的顶部......
结果列表:
"" (String.Empty)
"" (String.Empty)
"" (String.Empty)
A
B
C
D
我必须创建自己的 SortDescription 类吗?
c# - CollectionView.DeferRefresh() 抛出异常
在某些情况下,由于大量 INotifyChangedProperties 事件,您有许多 UI 更新。在这种情况下,您可能只想在所有属性都像批处理一样设置时向 UI 发出一次更改信号。
我发现这篇很棒的文章解释了如何推迟 ViewCollection 的刷新:
http://marlongrech.wordpress.com/2008/11/22/icollectionview-explained/
但是,当视图被延迟并且我尝试向集合中添加一些东西时,我得到了一个异常。我不明白为什么不允许这样做。这就是它的全部意义。
InvalidoperationException: 在延迟刷新时无法更改或检查 CollectionView 的内容或当前位置。
有谁知道如何解决这个问题?非常感谢,