【问题标题】:How to bind WPF Datagrid itemssource to Collection of Collections?如何将 WPF Datagrid itemssource 绑定到 Collection of Collections?
【发布时间】:2010-01-08 20:18:39
【问题描述】:

将 WPF DataGrid ItemsSource 绑定到 ObservableCollections 的 ObservableCollection 的最佳方法是什么?

例如

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”属性,还是需要将数据打包到更容易绑定的结构中?

【问题讨论】:

    标签: wpf datagrid wpftoolkit wpfdatagrid


    【解决方案1】:

    这可以通过使用集合派生类作为内部对象并在其上实现 ICustomTypeDescriptor 来实现 - 请参阅有关该主题的类似 SO 问题(用 Silverlight 标记,但想法相同)

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

    【讨论】:

    • 有没有办法在不修改内部对象的情况下做到这一点?我从应用程序的不同区域获得了这个对象层次结构,并且很好奇是否有一种方法可以直接绑定到它而无需修改它。
    • 我不知道。您必须将您的内部集合公开为单个对象,该对象对集合的每个元素都有一个属性。据我所知,这只能通过像我建议的那样“包装”你的内部收藏来实现。或者,如果您倾向于使用动态(.NET 4.0 功能) - 您可以以更简单的方式实现它(但它仍将是包装 - 即定义一个额外的类型而不是内部集合)。
    猜你喜欢
    • 2011-12-17
    • 2023-03-07
    • 2011-07-10
    • 2020-01-30
    • 2017-09-18
    • 1970-01-01
    • 2019-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多