2013-10-24 42 views
0

我想要将一组数据绑定为DataGrid中的不同列。我们绑定数据的正常方式是绑定属性。但是现在我的场景是属性是一个动态集合,它可能与不同的对象实例不同。对于我需要动态创建的每个对象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:

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列(公司名称,国家,职员)和2行(西门子,ABB)。

我正在用的是如何公司性质不同柱的集合捆绑在我DataGrid因为“国家”和“职员”的奋斗是不是在ObservableCollection成员类“公司”的性质,但只值。

+0

您可以请[将您的解决方案添加到答案中,然后将该答案标记为正确](http://stackoverflow.com/help/self-answer),以便用户知道此问题已得到解答?非常感谢。 – Sheridan

回答

0

经过一番调查后,我自己想出了一个解决方案,那就是创建一个DataTable将集合数据传输到DataTable(我们可以轻松地将这些值更改为DataTable中的不同列)。

然后,我们将DataTable绑定到数据网格,而不是绑定“ObservableCollection _list”。这似乎很有用。

而且我仍然很想知道是否有人为这种塞纳里奥获得了其他更好的解决方案?

相关问题