【发布时间】:2013-02-08 16:16:17
【问题描述】:
我正在尝试将一些控件绑定到一个对象 - 这通常是一个非常简单的过程。不幸的是,如果我绑定的对象继承自 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"; } }
}
【问题讨论】:
-
为什么要设置两次DataSource?先输入,再实例化。
标签: c# winforms data-binding exception-handling collectionbase