C# WPF-仅显示基类属性的DataGrid
我试图用多个对象的C# WPF-仅显示基类属性的DataGrid,c#,wpf,datagrid,C#,Wpf,Datagrid,我试图用多个对象的列表填充数据网格。这些对象都是基类固有的。我成功地显示了DataGrid中的列和行,但是我只看到基类的属性,而没有看到子类的属性 不幸的是,我在网上搜索时找不到很多有用的信息。但我对WPF和C还是新手,所以也许这就是问题所在 如何让DataGrid显示基类和子类的所有属性 编辑: 我有几个从基类继承的类(比如a、B、C),我有一个类型列表list,其中包含多个类型的多个对象。我需要显示数据网格中的所有不同子类。您的列表中的T是什么?类型元数据是从中推断出来的(至少在winfor
列表
填充数据网格。这些对象都是基类固有的。我成功地显示了DataGrid中的列和行,但是我只看到基类的属性,而没有看到子类的属性
不幸的是,我在网上搜索时找不到很多有用的信息。但我对WPF和C还是新手,所以也许这就是问题所在
如何让DataGrid显示基类和子类的所有属性
编辑:
我有几个从基类继承的类(比如a、B、C),我有一个类型列表
list
,其中包含多个类型的多个对象。我需要显示数据网格中的所有不同子类。您的列表中的T
是什么?类型元数据是从中推断出来的(至少在winforms绑定中是这样;因此我假设这也适用于WPF)。因此,如果您有一个列表
,那么只会显示基类
的属性。尝试使用列表
代替。尝试使用列表
代替列表
类基
{
}
派生类1:基
{
公共字符串Prop1{get;set;}
}
派生类2:基
{
公共字符串Prop2{get;set;}
}
已加载私有无效窗口(对象发送器、路由目标)
{
this.DataContext=新列表()
{
新的Derived1(){Prop1=“Hello”},
新的Derived2(){Prop2=“World”}
};
}
这对我有用。我在第一行看到Hello,在第二行看到World。我认为您可以绑定属于子类的DataGridColumn
子类的对象名称。对应子类的属性名称如果我需要显示多个DerivedClass和基类的属性,该怎么办?一个列表
应该显示对象层次结构中直到DerivedClass
的所有内容,但大多数网格只能显示同质数据——只有在对象之间存在某种共性时,它才会起作用。因此,如果您的意思是有一个A:BaseClass
和一个B:BaseClass
,那么您不能同时显示A
属性和B
属性。您可以显示共享属性,也可以创建一个仅包含a
对象或B
对象的列表(分别位于列表
或列表
中)。但是,如果您有C:BaseClass
和a:C
和B:C
,然后一个列表
将显示从基类
到C
的所有内容。是的,这非常有效。我现在唯一的问题是我有空列。DataGrid中是否有自动隐藏空列的属性?我和一个同学找了一个,但找不到。在DataGridColumns上设置MinWidth=“0”Width=“Auto”
<DataGrid ItemsSource="{Binding}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Prop1}" />
<DataGridTextColumn Binding="{Binding Prop2}" />
</DataGrid.Columns>
</DataGrid>
class Base
{
}
class Derived1: Base
{
public string Prop1 { get; set; }
}
class Derived2: Base
{
public string Prop2 { get; set; }
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
this.DataContext = new List<Base>()
{
new Derived1(){Prop1 = "Hello"},
new Derived2() {Prop2 = "World"}
};
}