私はいくつかのコントロールをオブジェクトにバインドしようとしています-これは通常、かなり簡単なプロセスです。残念ながら、バインドしているオブジェクトがCollectionBaseから継承している場合、そのクラスフィールドにバインドするとエラーが発生します。
データソースのプロパティまたは列のキャプションにバインドできません。パラメータ名:dataMember
コレクションベースの継承を削除すると、この問題は解消されますが、このオブジェクトをコレクションにする必要があります。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"; } }
}