WPF-DataGrid只显示基类的属性
本文关键字:属性 基类 显示 WPF-DataGrid | 更新日期: 2023-09-27 17:49:28
我正在尝试用多个对象的List<>
填充DataGrid。这些对象都是基类固有的。我成功地显示了DataGrid中的列和行,但我只看到基类的属性,而没有看到子类的属性。
不幸的是,我在网上搜索时找不到太多有用的信息。但我还是WPF和C#的新手,所以也许这就是问题所在。。。
如何让DataGrid显示基类和子类的所有属性?
编辑:我有几个从BaseClass继承的类(比如a、B、C(,并且我有一个类型为List<BaseClass>
的列表,其中包含多个类型的多个对象。我需要在DataGrid中显示所有不同的子类。
<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"}
};
}
这对我有用。我看到第一排是Hello,第二排是World。
您的List<T>
中的T
是什么?类型元数据是从中推断出来的(至少在winforms绑定中是这样;所以我认为这也适用于WPF(。因此,如果您有一个List<BaseClass>
,那么将只显示BaseClass
的属性。请尝试使用List<DerivedClass>
。
尝试使用List<ChildClass>
而不是List<BaseClass>
。
我认为您可以绑定属于子类的DataGridColumn。
子类的对象名。对应子类的属性名