2010-01-08 186 views
0

将WPF DataGrid ItemsSource绑定到ObservableCollection的ObservableCollection的最佳方法是什么?如何将WPF Datagrid的itemssource绑定到集合的集合?

例如

public ObservableCollection<ObservableCollection<MyDataItem>> DataValues = new ObservableCollection<ObservableCollection<MyDataItem>>(); 

其中MyDataItem可能看起来像这样:

public class MyDataItem 
{ 
    public string Caption { get; set; } 
    public string DataValue { get; set; } 
} 

我可以假设藏品的收集不是锯齿状,它们都包含相同数量的“列”的

是它是否可以将每个列动态绑定到MyDataItem对象的'DataValue'属性,还是需要将数据打包为更容易绑定的结构?

回答

0

这是通过使用一个集合的派生类作为内部对象,并执行关于它ICustomTypeDescriptor可能 - 参见类似SO问题的话题(具有标记Silverlight中,但是同样的想法)

Silverlight DataGrid - Binding to a Collection of Collections of objects.

+0

有没有办法做到这一点,而不修改内部对象?我从应用程序的不同区域获取此对象层次结构,并且很好奇是否有方法直接绑定到它而无需修改它。 – GlitterMonkey 2010-01-08 21:57:53

+0

不是我知道没有。您必须将内部集合公开为一个对象,该对象对集合中的每个元素都有一个属性。据我所知,这只能通过像我所建议的那样'包裹'你的内部集合来实现。或者如果你倾向于使用动态(.NET 4.0特性) - 你可以用更简单的方式实现它(但它仍然会包装 - 即定义一个额外的类型而不是内部集合)。 – 2010-01-08 22:00:49