问题标签 [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 不会破坏 CollectionChanged 订阅者列表?
我有一个 ObservableCollection,我需要通过重新加载按钮来替换它。在尝试这个过程中,我发现即使变量“myCollection”在“ReLoadData”中被取消(参见下面的代码示例)并分配了一个新的 ObservableCollection,但我没有向其 CollectionChanged 成员添加任何事件处理程序,CollectionChanged 事件也会触发:
我怀疑这可能与赋值运算符在 C# 中的实现方式有关,但据我所知,它不能在 C# 中被覆盖,所以我不知道如何解释上述行为......有谁知道这个?
c# - 如何在运行时将数据绑定到 DataGrid
所有,我有一些测试代码可以处理一些定义为的测试数据
并在设计时通过
我创建了一个DataGrid
在运行时通过
和
效果很好,但是由于(我相信)不存在,更新用于处理测试数据的网格视觉效果的代码不再起作用ItemsSource="{Binding TestData}"
。应该绑定插入到 aTextBox
和单元格中的文本的 XAMLDataGrid
是:
我的问题是;
如何创建与
DataGrid
我在运行时创建的数据集的相同绑定?
有人提出原因是我的数据没有实现INotifyCollectionChanged
接口,但是由于数据的可变性,我必须将数据加载到DataGrid
运行时。
如果数据的结构可以更改,我如何将此数据绑定到
DataGrid
实现的类?INotifyPropertyChanged
非常感谢你花时间陪伴。
wpf - WPF 根据 observablecollection 的变化动态创建用户控件或使用嵌套的用户控件可视化嵌套的 ObservableCollections
我是 WPF 新手,我找不到解决问题的方法。
我的 ViewModel 中有一个 Observable 集合:
在 Process 类中是另一个 ObervableCollection:
我想每次在我的视图中动态添加一个新的用户控件(可以可视化进程数据的实际状态,以及它的突发时间),当激活一个新进程时,并在进程启动时将其删除结束(当可观察的集合发生变化时)..在它运行期间,我想显示它的 Burst Time 集合,什么可以及时改变..
我尝试在我的用户控件的代码隐藏中订阅 CollectionChanged 事件,并在另一个用户控件中使用用户控件,并在我的事件处理程序运行时动态创建所需的 TextBlocks,但我总是得到一个 System.Reflection.TargetInvocationException(内部异常:系统.NullReferenceException) 当我的外部 InitializeComponent() 正在运行时..
有可能做到吗?是否可以在对 ObservableCollection 的元素更改做出反应时在我的外部 UserControl 的代码隐藏中创建或删除用户控件,并在内部 ObservableCollection 中的元素更改时更新外部控件?除了动态地在另一个用户控件中实例化用户控件之外,还有其他方法吗?有什么特殊的控件,什么可以在 ObservableCollection 中显示 ObservableCollection?
(如果可能的话,我希望拥有不同的用户控件,就像我的 ObservableCollection 拥有的元素一样......)
谢谢你的帮助!
c# - INotifyCollectionChanged 未更新 UI
我有一个类,如下所示。为简洁起见,我删除了所有功能
现在我又多了一个 Model 类,如下所示。AddValueCommand 是派生自 ICommand 的类,我再次省略了它。
在主窗口中,我将我的 UI 绑定到模型,如下所示
我的用户界面如下所示
单击按钮时,我的列表框未使用新值更新。我在这里缺少什么。
wpf - 可观察到的绑定到同一集合的两个 ICollectionView
所以我正在使用作为框架WPF
的MVVM
方式。Caliburn.Micro
我有一个带有 ObservableCollection 的 ViewModel,我需要用不同的排序、过滤和分组显示两次。
我对这个本应简单的动作感到有些困难。我通常会这样做:
它工作正常,它排序并且它是可观察的。
所以我以同样的方式添加了第二个视图:
现在的问题是(可能是因为我访问默认视图并因此具有相同的引用)所有排序/过滤都是对两个视图进行的。
所以我尝试做新的实例,ICollectionView
但CollectionView
不应该被使用,并且ListCollectionView
是为列表制作的,IEnumarbles
所以即使我使用ToList()
视图不再可观察的方法,我也不会这样做。
这样做的正确方法是什么?
wpf - wpf dataGrid总和单元格与实体
我在 WPF 和实体框架中显示 dataGrid,第 2 列有单位价格第 3 列有数量(第 4 列有折扣),我希望第 5 列是摘要。我的问题是如何捕获第三列并计算总列的变化
这是代码如何显示数据
我尝试了几种方法,但没有结果
提前感谢您的帮助
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
)。
c# - 在没有 ObservableCollection 作为 ItemsSource 的情况下编辑 DataGridViewCell
我花了很长时间才弄清楚如果 ItemsSource 不是 ObservableCollection,DataGridView 将不允许编辑单元格。我的假设是对的吗?
我有一个 DataGridView,它具有另一个 DataGridView 的 SelectedItem 的属性作为 ItemsSource。不幸的是,Property 不能是 ObservalbeCollection 或派生自它。
所以我的具体问题是,如果 DataGridView 的 ItemsSource 不是明确的 OberservableCollection,则它不允许我编辑单元格。我希望 INotifyCollectionChanged 接口是因为这个原因而存在的。有什么建议么?
提前致谢
约翰
这是我的 ViewModel 的代码,它用作 ItemsSource
这是我的 DataGrid 的 XAML 代码
c# - 从 LongListMultiSelector 中删除项目
我是 Windows Phone 8 开发的新手。我已经使用它大约一个月了,并且已经编写了自己的新闻应用程序来使用来自 API 的数据。我将文章内容作为 .json 文件离线保存到应用程序的本地存储中。由于我已经将它们离线保存,因此我想让我的用户能够将该文章“保存”到收藏夹列表中,并让我的一个枢轴项目显示已保存文章的列表以供他们以后访问。我还希望该列表可由用户管理,即我希望他们能够根据需要删除这些项目。
我计划使用一个名为的对象加载列表的数据上下文:
这只是一个
我已经阅读了很多关于如何使用INotifyPropertyChanged更新当前视图的内容,但我认为这更多的是关于更新列表中现有项目的属性。我需要的是可以在用户选择一个项目然后单击 AppBar 中的删除后更新 ItemsSource 的东西。我认为这就是INotifyCollectionChanged应该出现的地方,但是对于我的生活,我看不到如何实现它。
找人来启发我或指出一个很好的例子。
我已经用谷歌搜索了这个,但找不到很多例子,而我见过的例子,我就是没有。
谢谢!
c# - 在不知道集合类型的情况下将 CollectionChanged 添加到 ObservableColleciton
我正在尝试将 CollectionChanged 事件添加到类中的任何项目。假设我有以下内容:
我的代码目前从 A 类开始,查看使用 INotifyPropertyChanged 的类中的每个项目,并将 PropertyChanged 事件分配给每个项目,并递归地深入每个子类,在每个级别分配 PropertyChanged 事件。
我的问题是当我尝试将 CollectionChanged 事件分配给 ObservableCollection 时。我的代码直到运行时才知道 ObservableColleciton 中项目的类型。我有以下代码:
当我尝试添加 CollectionChanged 事件处理程序时,我收到以下错误:
如何在运行前不知道类类型的情况下添加 CollectionChanged 事件处理程序