将多个列表绑定到一个网格
本文关键字:一个 网格 列表 绑定 | 更新日期: 2023-09-27 18:16:46
我需要将多个列表或BindingLists(应该没有区别)绑定到一个网格。这些列表都有相同的大小,但不同的对象类型。这些列表中不同对象的属性应该以相邻列的形式显示,就好像列表A的第一个元素属于列表B的第一个元素,依此类推。
到目前为止,我将数据复制到一个DataTable中,并将其用作数据源,但由于各种原因,这已经不可能了。
我知道直接绑定多个列表是不可能的,但我不知道如何开始。我确实读了一些关于数据绑定,但看起来我必须编写很多代码才能工作,使用CurrencyManager等。
是否有一个简单的解决方案可以帮助我?也许一个包装器类可以完成所有这些?如果没有,谁能给我一些提示,哪些接口必须实现,还有什么要记住?
如果不能将这些完全不同的对象合并为一个对象,那么这就不是一个可绑定列表。
你可以在一个全新的对象列表中对这些对象进行浅层复制,并动态创建它们:
Object MyFirstObject;
Object MySecondObject;
void BindableClass( Object class_1, Object class_2 )
{
MyFirstObject = class_1;
MySecondObject = class_2;
}
public String _firstColumnString { get { return MyFirstObject.FirstColumnString; } }
public String _secondColumnString { get { return MySecondObject.SecondColumnString; } }
更好的是,在你的BindableClass构造函数中只提取你需要的信息。
void BindableClass( Object class_1, Object class_2 )
{
_firstColumnString = MyFirstObject.FirstColumnString;
_secondColumnString = MySecondObject.SecondColumnString;
}
(但现在你真的只剩下一个列表了!)
你可以这样创建对象:
for (int i = 0; i < TheListSize; i++)
{
ABindableList list = new BindableClass( FirstList[i], SecondList[i] );
}