我正在尝试将一些控件绑定到一个对象——这通常是一个非常简单的过程。不幸的是,如果我绑定到的对象继承自 CollectionBase,绑定到该类字段会导致错误:
无法绑定到 DataSource 上的属性或列 Caption。参数名称:dataMember
删除 collectionbase 继承使这个问题消失,但我需要这个对象是一个集合。似乎 CollectionBase 导致更高级别的属性变得“不可绑定”。是否有一些我可以覆盖的属性来解决这个问题?还有其他想法吗?
我在网上找到了这个例子,很容易总结了这个问题。不幸的是,我还没有在我看到这个例子的所有地方找到答案。
代码:
[STAThread]
static void Main()
{
TestCollection obj = new TestCollection();
using (Form f = new Form())
using (BindingSource bs = new BindingSource())
{
bs.DataSource = typeof(Test);
f.DataBindings.Add("Text", bs, "Caption");
bs.DataSource = obj; // breaks
//List<TestallData = new List<Test>();
//allData.Add(obj);
//bs.DataSource = allData;
f.ShowDialog();
}
}
class TestCollection : CollectionBase
{
public string Caption { get { return "Working"; } }
}