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

0 投票
1 回答
3989 浏览

c# - 将对象添加到 BindingList, re-sort and make comboBox update to reflect change

I've got a basic Person class defined like this:

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }



I've got a basic Person class defined like this:

Now I'm creating a list of people like this:

Once my list has been populated, I want to sort it by name like this:

Next, I'm creating a BindingList which I will use as the datasource for a combobox like this:

So far, this much is working ok. But now I have a couple of problems that I can't seem to get fixed. First, I need to be able to add Person objects and have the list remain sorted. Right now, I can add a new Person object to the bindingList (via bindingList.Add(newPerson)) and it will show up in the comboBox, albeit at the bottom (i.e., not sorted). How can I re-sort the bindingList once I've added something to it so that it appears sorted in the comboBox?


I think honestly you don't need special list for this. Just use what you have in your hands, don't reinvent a wheel in other words.

Here is similiar question to yours and solution:

BindingList<T>.Sort() to behave like a List<T>.Sort()

0 投票
1 回答
799 浏览

bindinglist - BindingList ListChanged 事件

我正在订阅绑定列表中的 ListChanged 事件。当列表更改(添加/删除项目)时,我将更新内部列表。内部列表包含与原始列表中的项目1-1 对应的对象。项目顺序可以不同。

根据文档,触发事件时,ListChangedEventArgs.ListChangedType 可以是以下之一:ItemAdded、ItemDeleted、Reset 和 ItemChanged。当列表中的项目发生更改时,ListChangedType 为 ItemChanged,该项目被另一个项目替换,或者其属性之一被修改。

我如何区分这些情况,以便如果列表中的项目被另一个项目替换,我可以重新加载内部列表,但如果是属性更改则什么都不做?

有没有更好的方法来实现这一点?

0 投票
1 回答
2565 浏览

c# - 使 SortableBindingList 使用稳定排序的最简单方法

有一个如何修改SortableBindingList以使用稳定排序的示例。但是,有一个更新版本的 SortableBindingList。修改这个新版本以使用稳定排序的最佳方法是什么?我想我希望在 SortableBindingList 上有一个标志,让 SortableBindingList 的用户决定他们是要使用(较慢)稳定排序还是(较快)默认排序。

谢谢

0 投票
1 回答
2554 浏览

winforms - 将绑定列表数据绑定到组合框并删除项目

我正在尝试使用 Windows 窗体数据绑定将组合框连接到 ViewModel 类。

一切正常,除非我从列表中删除项目。例如,如果我删除当前选定的项目(在组合框中选择),则组合框的 selectedIndexChanged 和 SelectedValueChanged 事件不会触发。

0 投票
2 回答
900 浏览

c# - 如何创建可比较的图像

我有一个DataGridView绑定到通用的BindingList. 我希望能够对type 的列应用排序搜索DataGridViewImageColumn基本思想是将名称存储到图像Tag中,用于排序和搜索。我怎样才能做到这一点?

似乎有几种方法可以做到:

  1. 创建一个继承System.Drawing.Image并使其具有可比性的新类。
    • Image是一个抽象类,如果我从它(以及IComparable接口)继承,我会遇到这个错误消息:类型'System.Drawing.Image'没有定义构造函数。这里有什么问题?Imageabstract不是一个sealed类,但它不允许我继承它!
  2. ApplySortCore使用继承的类的受保护的覆盖方法BindingList<T>

    • 这个方法是这样的:

      /li>
  3. 创建一个新的DataGridViewColumn继承自DataGridViewImageColumn.
    • 这似乎并不容易,如果其他想法无法使用,可以使用。

提前致谢

0 投票
2 回答
1025 浏览

c# - IBindingList 更改通知

我正在尝试创建一个显示来自 IBindingList 数据源的数据的程序(简单网格 - 具有专门的输出)。我可以很好地显示数据,但我也希望能够让用户在其中编辑数据,比如在与网格分开的 TextBox 中。我的问题是我不清楚如何完成两个元素(我的网格和可编辑文本框)之间数据的“自动”更新。

我相信列表的 ListChanged 事件会告诉我列表本身何时发生变化,但我需要网格知道列表中的实际数据何时发生变化。当网格外部发生更改时,我偶然发现的唯一一件事就是挂接到 BindingManagerBase.Bindings[0].Parse 事件。并不是说用户会这样做,但如果用户已经建立了几个都绑定到同一个字段的文本框,我想我必须遍历每个 BindingManagerBase.Binding 条目并挂钩它?

我假设我没有正确执行此操作,并且有一种更通用的方法来完成此操作。我非常感谢任何更熟悉我正在尝试完成的工作的人的指导。

在此先感谢,-马特

0 投票
1 回答
2460 浏览

c# - c# DataGridView.DataSource = BindingList 不起作用

我创建了一个绑定列表BindingList<RunData>并通过它CustomMessageBox.Show()DataGridView不显示列表元素。

我以前从未使用BindingList过,但从我在网上找到的示例看来,我做的一切都很好。任何帮助,将不胜感激。

谢谢!

编辑

如果这有什么不同,我正在使用 .NET 2.0。

0 投票
2 回答
2621 浏览

c# - 绑定列表和 UI 控件,在编辑时不更新

我以两种方式将 BindingList 绑定到列表框。绑定列表包含许多图像,如果从绑定列表中添加或删除项目,这些图像显然只会更新列表框。如何使绑定列表在修改项目时也引发 listchanged 事件?

编辑:我发现我遇到的问题是对象的属性没有被更改,而是基础对象。

但是,如果我这样做,这将不起作用:

然后将绑定路径设置为 Image.Source,它会正确更新,这是因为 Image 的属性已更改,但在第一个示例中,仅列表中的直接项已更改。那么我怎样才能获得与第二个示例相同的行为呢?

最后编辑:似乎使用 ObservableCollection 而不是 BindingList 解决了这个问题。我的印象是它们在通知集合的变化方面是相同的。完整答案如下

0 投票
1 回答
178 浏览

.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?

0 投票
1 回答
1386 浏览

c# - 绑定列表其中 T 是实现其他接口的接口

我坚持使用 BindingList,其中 T 是扩展 A 接口的接口。当我在绑定中使用这个 bindingList 时,只有来自 T 的属性是可见的,而来自继承的 A 接口的属性不可见。为什么会这样?它看起来像一个 .net 错误。我需要我的 2 个项目来共享一些通用功能。当从 baseImplementation 传输 PropertyChanged 事件时,绑定列表的 PropertyDescriptor 也为空。附加的接口和实现。到底SetUp方法