问题标签 [inotifycollectionchanged]
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.
c# - ObservableCollection 如何.添加工作?
我试图实现一个专门的集合,就像ObservableCollection
在其中封装更多机制一样,为此我还让我的集合继承自Collection
并且我也实现了相同的接口。
我只是不明白如何实际实现整个集合更改逻辑,例如没有被覆盖(它甚至没有标记为虚拟),那么如果使用该方法添加项目Collection<T>.Add
,如何ObservableCollection
触发事件?CollectionChanged
c# - EntityFramework EntityCollection 观察 CollectionChanged
我首先在应用程序中使用 EntityFramework 数据库。我想以某种方式收到关于EntityCollection
我的 ViewModel 中的更改的通知。它不直接支持INotifyCollectionChanged
(为什么?)而且我还没有成功找到另一个解决方案。
这是我最近的尝试,由于该ListChanged
事件似乎没有引发,所以它不起作用:
有谁知道我如何观察到的变化EntityCollection
?
担
asp.net - WPF 中 ASP.NET DataBind() 的替代方法是什么?
我是 ASP.NET 开发人员,但最近也开发 WPF 应用程序。在 ASP.NET 中,每当我需要刷新 GridView 中的数据时,我只需调用DataBind()
. 但是在 WPF 中有什么替代方法呢?作为一种解决方法,我目前实现INotifyCollectionChanged
了刷新数据。
wpf - INotifyPropertyChanged 或 INotifyCollectionChanged 与 DataTable?
嗨,我对 DataTables 有一些麻烦。所以我需要的是检测每当我更改绑定的 DataTable 的 DataGrid 中的任何单元格时。
怎么做?与INotifyPropertyChanged
或与INotifyCollectionChanged
?
注意:我正在尝试,INotifyPropertyChanged
但它只检测到我何时在 DataTable 中设置了一些值,而不是当我更改 DataGrid 中任何单元格的任何值时,我已经尝试过OneWay
但TwoWay
没有任何反应。
提前致谢!
wpf - WPF:如何挂钩到 ListView 的 ItemsSource CollectionChanged 通知?
我有一个ListView
数据绑定到ObservableCollection
...
我似乎找不到任何在集合更改时触发的事件,所以我想我需要以某种方式挂钩到 collectionchanged 通知?我不确定该怎么做。
基本上,当集合发生变化时,我想做除了 ListView 在更新列表中已经做的工作之外的额外工作。
c# - WPF:在用户绘制的控件中显示二维数组的正确方法是什么
我想制作一个用户绘制的控件,其唯一目的是显示一个 Color[,] 数组。控件本身应该绘制一个由相应颜色的矩形组成的 NxM 网格。
我正在尝试从 FrameworkElement 继承并覆盖 OnRender 方法:
问题是当我更改底层数组中的元素时,我的控件不会重绘自身。当我分配一个全新的数组或调整控件大小时,它工作正常。
显然,我需要另一个类,它以某种方式通知控件关于集合中的内部更改。我正在查看 INotifyCollectionChange 和 ObservableCollection 但我发现的唯一文章是关于将集合绑定到现有控件,而不是自定义用户绘制的。所以我很困惑并停留在这一点上。
c# - ObservableCollection 如何触发 Replace 操作?
在 NotifyCollectionChangedEventArgs 的事件 args 的文档中,有一个动作叫做 Replace(除了 Add、Remove、Move 等)。这什么时候可以解雇?我在 ObservableCollection 中看不到任何 Replace 方法
wpf - 可观察链表
在我的 WPF 应用程序中,我有一个 ItemsControl,其项目值取决于上一个显示的项目。
ViewModel 是一个分割成可变长度部分的音频文件,我需要以这种方式显示它,右侧显示一个 DateTime,这就是我需要计算的(我只知道每个部分的长度,我需要计算它开始和结束的实际时间,以及 ItemsControl 上的位置)。
我的第一种方法是使用一个ObservableCollection<MyviewModel>
但很快就发生了一些恐怖事件:
5-way multibinding 在其中IMultiValueConverter
我将计算要返回的值并将 DataContext 的属性设置为该值,因为我只知道运行时的前一个元素。
前一个元素是使用绑定发送的Relativesource.PreviousData
。
现在我的问题是,在从 Converter 设置一个值(这显然是一件坏事)并实际让它工作之后,常规 Collection 在其元素中没有顺序的概念,所以当更进一步时我想在其余部分中间添加一个音频部分,显示混乱。
此外,当我要实现更多业务逻辑时,我可能需要访问在此转换器中计算的音频部分的开始和结束,如果它还没有显示怎么办......?
所以这种方法在几个层面上都是错误的。
那是我开始谷歌搜索并发现的地方LinkedList
。现在我正在尝试创建一个基本上是 Observable LinkedList 的类(我不需要它是通用的):
问题的核心是我无法覆盖修改集合的方法(Addfirst、AddLast 等),所以我无法正确调用 OnNotifyCollectionChanged ......
所以我想我可以为这些方法中的每一种方法进行重载,但这听起来很讨厌......
简而言之:我需要某种集合,其中每个项目都知道前一个项目的详细信息,以便计算它自己的一个属性。
有什么线索吗?这甚至是一个好的解决方案吗?
谢谢!
附录,ViewModel 看起来像:
编辑:我想我会尝试结合 Thomas 和 Will 的答案:我将使用组合(即我在我的自定义对象中保留一个 LinkedList 的实例而不是从它继承)并重新定义要使用的方法(AddAfter、AddFirst等),我将在调用实际的 LinkedList 方法后调用 OnNotifyPropertychanged。这有点工作,但我想我的问题不会有任何优雅的解决方案......
ienumerable - 使用 Reactive Extensions 监控 IEnumerable
我正在连接到一个将对象集合异步加载到 IEnumerable 中的对象。在我连接时,IEnumerable 的集合中可能已经有项目,并且可能会在应用程序的生命周期内添加需要在发生时通知我的项目。例如,它可以是包含银行交易列表的银行账户。
挑战是这样的。我想将 IEnumerable 中初始值的处理与任何新增内容结合起来。它们目前是两个过程。我想完全消除 NotifyCollectionChanged 的使用。
我可以修改持有 IEnumerable 的后端。如果存在此问题的解决方案,则不需要保留为 IEnumerable。
c# - 如何在 ObservableCollection 上引发 CollectionChanged 事件,并将更改的项目传递给它?
我有一个类继承自ObservableCollection
并添加了一些其他方法,例如AddRange
和RemoveRange
我的基本方法调用是这样的:
我的问题是我想访问e.NewItems
或e.OldItems
在CollectionChanged
事件中对集合中的任何项目执行操作,并且该NotifyCollectionChangedAction.Reset
操作没有传递这些值
所以我想我可以只使用NotifyCollectionChangedAction.Add
而不是Reset
,但是会引发Range actions are not supported
异常
所以我的问题是,我怎样才能引发一个 CollectionChanged 事件,并将它传递给新的或旧的项目列表?