将多个列表绑定到一个网格

本文关键字:一个 网格 列表 绑定 | 更新日期: 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] );
}