我想将一组数据绑定为DataGrid
中的不同列。我们绑定数据的正常方式是bind属性。但现在我的场景是属性是一个动态集合,可能与不同的对象实例不同。对于每个对象,我需要动态创建DataGrid
。
这里我给出了一个简化的实例,它是从我的场景中抽象出来的:
public class Company
{
...
public string CompanyName { set; get; }
public ObservableCollection<CompanyProperty> data;
}
public class CompanyProperty
{
public string PropertyName { get; set; }
public string Value { get; set; }
}
在我的主要课程中,我有一个ObservableCollection of Company:
class Window
{
private ObservableCollection<Company> _list;
private void CreateData()
{
Company tmp = new Company("Siemens");
tmp.data.Add(new CompanyProperty() { PropertyName = "Country", Value = "Germany" });
tmp.data.Add(new CompanyProperty() { PropertyName = "Staffs", Value = "400,000" });
_list.Add(tmp);
tmp = new Company("ABB");
tmp.data.Add(new CompanyProperty() { PropertyName = "Country", Value = "Swiss" });
tmp.data.Add(new CompanyProperty() { PropertyName = "Staffs", Value = "100,000" });
_list.Add(tmp);
}
}
现在我想将我的数据绑定到DataGrid
,它看起来像3列(CompanyName,Country,Staffs)和2行(Siemens,ABB)。
我正在努力解决的问题是如何将公司属性集合绑定到DataGrid
中的不同列,因为“Country”和“Staffs”不是“Company”类的属性,而只是ObservableCollection
成员。
答案 0 :(得分:0)
经过一番调查后,我自己想出了一个解决方案,就是创建一个DataTable将集合数据传输到DataTable(我们可以轻松地将值更改为DataTable中的不同列)。
然后我们将DataTable绑定到datagrid,而不是绑定“ObservableCollection _list”。这似乎有效。
我仍然有兴趣知道是否有人为这种类型的Senario获得了一些其他或更好的解决方案?