问题标签 [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.

0 投票
1 回答
767 浏览

c# - 为什么分配给 ObservableCollection 不会破坏 CollectionChanged 订阅者列表?

我有一个 ObservableCollection,我需要通过重新加载按钮来替换它。在尝试这个过程中,我发现即使变量“myCollection”在“ReLoadData”中被取消(参见下面的代码示例)并分配了一个新的 ObservableCollection,但我没有向其 CollectionChanged 成员添加任何事件处理程序,CollectionChanged 事件也会触发:

我怀疑这可能与赋值运算符在 C# 中的实现方式有关,但据我所知,它不能在 C# 中被覆盖,所以我不知道如何解释上述行为......有谁知道这个?

0 投票
1 回答
1768 浏览

c# - 如何在运行时将数据绑定到 DataGrid

所有,我有一些测试代码可以处理一些定义为的测试数据

并在设计时通过

我创建了一个DataGrid在运行时通过

效果很好,但是由于(我相信)不存在,更新用于处理测试数据的网格视觉效果的代码不再起作用ItemsSource="{Binding TestData}"。应该绑定插入到 aTextBox和单元格中的文本的 XAMLDataGrid是:

我的问题是;

如何创建与DataGrid我在运行时创建的数据集的相同绑定?

有人提出原因是我的数据没有实现INotifyCollectionChanged接口,但是由于数据的可变性,我必须将数据加载到DataGrid运行时。

如果数据的结构可以更改,我如何将此数据绑定到DataGrid实现的类?INotifyPropertyChanged

非常感谢你花时间陪伴。

0 投票
1 回答
2433 浏览

wpf - WPF 根据 observablecollection 的变化动态创建用户控件或使用嵌套的用户控件可视化嵌套的 ObservableCollections

我是 WPF 新手,我找不到解决问题的方法。

我的 ViewModel 中有一个 Observable 集合:

在 Process 类中是另一个 ObervableCollection:

我想每次在我的视图中动态添加一个新的用户控件(可以可视化进程数据的实际状态,以及它的突发时间),当激活一个新进程时,并在进程启动时将其删除结束(当可观察的集合发生变化时)..在它运行期间,我想显示它的 Burst Time 集合,什么可以及时改变..

我尝试在我的用户控件的代码隐藏中订阅 CollectionChanged 事件,并在另一个用户控件中使用用户控件,并在我的事件处理程序运行时动态创建所需的 TextBlocks,但我总是得到一个 System.Reflection.TargetInvocationException(内部异常:系统.NullReferenceException) 当我的外部 InitializeComponent() 正在运行时..

有可能做到吗?是否可以在对 ObservableCollection 的元素更改做出反应时在我的外部 UserControl 的代码隐藏中创建或删除用户控件,并在内部 ObservableCollection 中的元素更改时更新外部控件?除了动态地在另一个用户控件中实例化用户控件之外,还有其他方法吗?有什么特殊的控件,什么可以在 ObservableCollection 中显示 ObservableCollection?

(如果可能的话,我希望拥有不同的用户控件,就像我的 ObservableCollection 拥有的元素一样......)

谢谢你的帮助!

0 投票
2 回答
14496 浏览

c# - INotifyCollectionChanged 未更新 UI

我有一个类,如下所示。为简洁起见,我删除了所有功能

现在我又多了一个 Model 类,如下所示。AddValueCommand 是派生自 ICommand 的类,我再次省略了它。

在主窗口中,我将我的 UI 绑定到模型,如下所示

我的用户界面如下所示

单击按钮时,我的列表框未使用新值更新。我在这里缺少什么。

0 投票
1 回答
591 浏览

wpf - 可观察到的绑定到同一集合的两个 ICollectionView

所以我正在使用作为框架WPFMVVM方式。Caliburn.Micro

我有一个带有 ObservableCollection 的 ViewModel,我需要用不同的排序、过滤和分组显示两次。

我对这个本应简单的动作感到有些困难。我通常会这样做:

它工作正常,它排序并且它是可观察的。

所以我以同样的方式添加了第二个视图:

现在的问题是(可能是因为我访问默认视图并因此具有相同的引用)所有排序/过滤都是对两个视图进行的。

所以我尝试做新的实例,ICollectionViewCollectionView不应该被使用,并且ListCollectionView是为列表制作的,IEnumarbles所以即使我使用ToList()视图不再可观察的方法,我也不会这样做。

这样做的正确方法是什么?

0 投票
1 回答
761 浏览

wpf - wpf dataGrid总和单元格与实体

我在 WPF 和实体框架中显示 dataGrid,第 2 列有单位价格第 3 列有数量(第 4 列有折扣),我希望第 5 列是摘要。我的问题是如何捕获第三列并计算总列的变化

这是代码如何显示数据

我尝试了几种方法,但没有结果

提前感谢您的帮助

0 投票
1 回答
854 浏览

vb.net - VB.NET 索引“0”超出范围?

我在 WPF 中创建了一个 ListBox,其中ItemSource包含所有使 UI 刷新的类和事件。但是我的Remove方法有个问题:

Public Sub Remove(ItemIndex As Integer)
MyList.RemoveAt(ItemIndex)
RaiseEvent CollectionChanged(Me, New NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, MyList(ItemIndex)))
End Sub

但是当我执行此操作时,我收到一条消息,指出索引(在这种情况下ItemIndex)超出范围。但是在输出窗口中它说索引是'0'(否则它会从 中删除该项目MyList)。

0 投票
1 回答
194 浏览

c# - 在没有 ObservableCollection 作为 ItemsSource 的情况下编辑 DataGridViewCell

我花了很长时间才弄清楚如果 ItemsSource 不是 ObservableCollection,DataGridView 将不允许编辑单元格。我的假设是对的吗?

我有一个 DataGridView,它具有另一个 DataGridView 的 SelectedItem 的属性作为 ItemsSource。不幸的是,Property 不能是 ObservalbeCollection 或派生自它。

所以我的具体问题是,如果 DataGridView 的 ItemsSource 不是明确的 OberservableCollection,则它不允许我编辑单元格。我希望 INotifyCollectionChanged 接口是因为这个原因而存在的。有什么建议么?

提前致谢

约翰

这是我的 ViewModel 的代码,它用作 ItemsSource

这是我的 DataGrid 的 XAML 代码

0 投票
1 回答
145 浏览

c# - 从 LongListMultiSelector 中删除项目

我是 Windows Phone 8 开发的新手。我已经使用它大约一个月了,并且已经编写了自己的新闻应用程序来使用来自 API 的数据。我将文章内容作为 .json 文件离线保存到应用程序的本地存储中。由于我已经将它们离线保存,因此我想让我的用户能够将该文章“保存”到收藏夹列表中,并让我的一个枢轴项目显示已保存文章的列表以供他们以后访问。我还希望该列表可由用户管理,即我希望他们能够根据需要删除这些项目。

我计划使用一个名为的对象加载列表的数据上下文:

这只是一个

我已经阅读了很多关于如何使用INotifyPropertyChanged更新当前视图的内容,但我认为这更多的是关于更新列表中现有项目的属性。我需要的是可以在用户选择一个项目然后单击 AppBar 中的删除后更新 ItemsSource 的东西。我认为这就是INotifyCollectionChanged应该出现的地方,但是对于我的生活,我看不到如何实现它。

找人来启发我或指出一个很好的例子。

我已经用谷歌搜索了这个,但找不到很多例子,而我见过的例子,我就是没有。

谢谢!

0 投票
1 回答
418 浏览

c# - 在不知道集合类型的情况下将 CollectionChanged 添加到 ObservableColleciton

我正在尝试将 CollectionChanged 事件添加到类中的任何项目。假设我有以下内容:

我的代码目前从 A 类开始,查看使用 INotifyPropertyChanged 的​​类中的每个项目,并将 PropertyChanged 事件分配给每个项目,并递归地深入每个子类,在每个级别分配 PropertyChanged 事件。

我的问题是当我尝试将 CollectionChanged 事件分配给 ObservableCollection 时。我的代码直到运行时才知道 ObservableColleciton 中项目的类型。我有以下代码:

当我尝试添加 CollectionChanged 事件处理程序时,我收到以下错误:

如何在运行前不知道类类型的情况下添加 CollectionChanged 事件处理程序