WPF-DataGrid只显示基类的属性

本文关键字:属性 基类 显示 WPF-DataGrid | 更新日期: 2023-09-27 17:49:28

我正在尝试用多个对象的List<>填充DataGrid。这些对象都是基类固有的。我成功地显示了DataGrid中的列和行,但我只看到基类的属性,而没有看到子类的属性。

不幸的是,我在网上搜索时找不到太多有用的信息。但我还是WPF和C#的新手,所以也许这就是问题所在。。。

如何让DataGrid显示基类和子类的所有属性?

编辑:我有几个从BaseClass继承的类(比如a、B、C(,并且我有一个类型为List<BaseClass>的列表,其中包含多个类型的多个对象。我需要在DataGrid中显示所有不同的子类。

WPF-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。

子类的对象名。对应子类的属性名