BindingList<T> 如何知道选中的 Item?

Pul*_*lle 5 c# binding listbox

当您使用 BindingList 作为 Binding 时,让我们说一个 ListBox

listBox.DataSource = myBindingList;
Run Code Online (Sandbox Code Playgroud)

并将一些标签绑定到同一来源:

labelName.DataBindings.Add("Text",
                           myBindingList,
                           "Name",
                           false,
                           DataSourceUpdateMode.OnPropertyChanged);
Run Code Online (Sandbox Code Playgroud)

SelectedItem我的 listBox更改时,标签的值也会更改。

为什么我的标签的值总是引用当前选择的项目?

他们怎么知道,只要给他们BindingList作为来源,列表中的哪一项是被选中的?

Mar*_*ell 2

在 Windows 窗体中进行数据绑定时,UI 可以访问 aBindingContext和 a CurrencyManager。(最终)来自BindingContext父表单,并且是通过数据源引用获取CurrencyManager的。因此:如果同一表单上的两个控件被赋予相同的数据源,那么假设它们使用正常的绑定模式,它们将获得相同的数据源。它是跟踪所选项目的。BindingContextCurrencyManagerCurrencyManager

注意:可以根据BindingContext每个控件进行拆分;但默认情况下它是继承的 - 因此同一窗体上的所有控件将共享一个BindingContext.