如何获取绑定到DataGrid的Object类型

时间:2014-07-10 07:42:01

标签: c# wpf wpfdatagrid

我有一个绑定到ObservableCollection的DataGrid。

我想知道的是:不依靠查看项目并检索对象类型,我能以某种方式使用实际的DataGrid对象和ItemSource来查找对象的类型吗?

所以,如果我有以下内容:

DataGrid dg = DataGridObject as DataGrid;
Console.WriteLine("binding5=" + dg.ItemsSource.GetType());



output = System.Collections.ObjectModel.ObservableCollection`1[UserManagement.UserViewModel]

我可以以某种方式将UserManagement.UserViewModel提取到对象变量

2 个答案:

答案 0 :(得分:3)

如果我理解正确,您想要找出里面的对象类型设置为DataGrid.ItemsSource属性的集合。为此,您可以使用一些基本的反射。试试这个:

var collection = ListBox.ItemsSource;
Type collectionType = collection.GetType();
Type itemType = collectionType.GetGenericArguments().Single();

答案 1 :(得分:1)

假设集合属于ObservableCollection<>

类型

你去吧

        Type collectionType = dg.ItemsSource.GetType();

        if (collectionType.IsGenericType && collectionType.GetGenericTypeDefinition().IsAssignableFrom(typeof(ObservableCollection<>)))
        {
            Type objType = collectionType.GenericTypeArguments[0];
        }

这里我们将确认类型是否为泛型类型,其泛型定义是否可从ObservableCollection<>分配,然后将采用第一个类型参数,这将是元素的类型