问题标签 [bindinglist]
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.
bindinglist - BindingList ListChanged 事件
我正在订阅绑定列表中的 ListChanged 事件。当列表更改(添加/删除项目)时,我将更新内部列表。内部列表包含与原始列表中的项目1-1 对应的对象。项目顺序可以不同。
根据文档,触发事件时,ListChangedEventArgs.ListChangedType 可以是以下之一:ItemAdded、ItemDeleted、Reset 和 ItemChanged。当列表中的项目发生更改时,ListChangedType 为 ItemChanged,该项目被另一个项目替换,或者其属性之一被修改。
我如何区分这些情况,以便如果列表中的项目被另一个项目替换,我可以重新加载内部列表,但如果是属性更改则什么都不做?
有没有更好的方法来实现这一点?
c# - 使 SortableBindingList 使用稳定排序的最简单方法
有一个如何修改SortableBindingList以使用稳定排序的示例。但是,有一个更新版本的 SortableBindingList。修改这个新版本以使用稳定排序的最佳方法是什么?我想我希望在 SortableBindingList 上有一个标志,让 SortableBindingList 的用户决定他们是要使用(较慢)稳定排序还是(较快)默认排序。
谢谢
winforms - 将绑定列表数据绑定到组合框并删除项目
我正在尝试使用 Windows 窗体数据绑定将组合框连接到 ViewModel 类。
一切正常,除非我从列表中删除项目。例如,如果我删除当前选定的项目(在组合框中选择),则组合框的 selectedIndexChanged 和 SelectedValueChanged 事件不会触发。
c# - 如何创建可比较的图像
我有一个DataGridView
绑定到通用的BindingList
. 我希望能够对type 的列应用排序和搜索DataGridViewImageColumn
。基本思想是将名称存储到图像Tag
中,用于排序和搜索。我怎样才能做到这一点?
似乎有几种方法可以做到:
- 创建一个继承
System.Drawing.Image
并使其具有可比性的新类。Image
是一个抽象类,如果我从它(以及IComparable
接口)继承,我会遇到这个错误消息:类型'System.Drawing.Image'没有定义构造函数。这里有什么问题?Imageabstract
不是一个sealed
类,但它不允许我继承它!
ApplySortCore
使用继承的类的受保护的覆盖方法BindingList<T>
。这个方法是这样的:
/li>
- 创建一个新的
DataGridViewColumn
继承自DataGridViewImageColumn
.- 这似乎并不容易,如果其他想法无法使用,可以使用。
提前致谢
c# - IBindingList 更改通知
我正在尝试创建一个显示来自 IBindingList 数据源的数据的程序(简单网格 - 具有专门的输出)。我可以很好地显示数据,但我也希望能够让用户在其中编辑数据,比如在与网格分开的 TextBox 中。我的问题是我不清楚如何完成两个元素(我的网格和可编辑文本框)之间数据的“自动”更新。
我相信列表的 ListChanged 事件会告诉我列表本身何时发生变化,但我需要网格知道列表中的实际数据何时发生变化。当网格外部发生更改时,我偶然发现的唯一一件事就是挂接到 BindingManagerBase.Bindings[0].Parse 事件。并不是说用户会这样做,但如果用户已经建立了几个都绑定到同一个字段的文本框,我想我必须遍历每个 BindingManagerBase.Binding 条目并挂钩它?
我假设我没有正确执行此操作,并且有一种更通用的方法来完成此操作。我非常感谢任何更熟悉我正在尝试完成的工作的人的指导。
在此先感谢,-马特
c# - c# DataGridView.DataSource = BindingList 不起作用
我创建了一个绑定列表BindingList<RunData>
并通过它CustomMessageBox.Show()
但DataGridView
不显示列表元素。
我以前从未使用BindingList
过,但从我在网上找到的示例看来,我做的一切都很好。任何帮助,将不胜感激。
谢谢!
编辑
如果这有什么不同,我正在使用 .NET 2.0。
c# - 绑定列表和 UI 控件,在编辑时不更新
我以两种方式将 BindingList 绑定到列表框。绑定列表包含许多图像,如果从绑定列表中添加或删除项目,这些图像显然只会更新列表框。如何使绑定列表在修改项目时也引发 listchanged 事件?
编辑:我发现我遇到的问题是对象的属性没有被更改,而是基础对象。
但是,如果我这样做,这将不起作用:
然后将绑定路径设置为 Image.Source,它会正确更新,这是因为 Image 的属性已更改,但在第一个示例中,仅列表中的直接项已更改。那么我怎样才能获得与第二个示例相同的行为呢?
最后编辑:似乎使用 ObservableCollection 而不是 BindingList 解决了这个问题。我的印象是它们在通知集合的变化方面是相同的。完整答案如下
.net - 子绑定列表更改未传播到相应的绑定源
我有一个类 Sample,还有一个子类 SampleTests。在演示者类中,我有 BindingList(Of Sample) 属性 CurrentSamples。演示者还有一个 AddTest 方法,该方法将测试添加到绑定列表中的指定样本。
在表单中,有一个绑定到演示者的 CurrentSamples 属性的 SampleBindingSource。还有一个 SampleTestBindingSource 将 SampleBindingSource 作为其 DataSource 并将其 DataMember 设置为 SampleTest。
我已经验证,当我使用 AddTest 方法时,测试确实被添加到该样本中。我还通过遍历 bindingsource 记录并计算每条记录上的测试数来验证 SampleBindingSource 具有添加的测试。但是,如果我在具有两个测试的示例的 SampleTestBindingSource 中显示记录数,SampleTestBindingSource 只显示一个记录/测试。
我已经在演示者的绑定列表、SampleTestsBindingSource 和 SampleBindingSource 上尝试了 ResetBindings。我也在两个绑定源上尝试过 EndEdit。这些尝试都不会将 SampleTests 中的更改传播到 SampleTestsBindingSource。
如何让演示者中的更改一直传播到 SampleTestsBindingSource?
c# - 绑定列表其中 T 是实现其他接口的接口
我坚持使用 BindingList,其中 T 是扩展 A 接口的接口。当我在绑定中使用这个 bindingList 时,只有来自 T 的属性是可见的,而来自继承的 A 接口的属性不可见。为什么会这样?它看起来像一个 .net 错误。我需要我的 2 个项目来共享一些通用功能。当从 baseImplementation 传输 PropertyChanged 事件时,绑定列表的 PropertyDescriptor 也为空。附加的接口和实现。到底SetUp方法