WPF - DataGrid仅显示基类的属性

时间:2011-04-09 13:25:08

标签: c# wpf datagrid

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

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

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

编辑: 我有一些继承自BaseClass的类(比如A,B,C),我有一个类型List<BaseClass>的列表,它包含多个类型的多个对象。我需要在DataGrid中显示所有不同的子类。

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

T中的List<T>是什么?从中推断出类型元数据(至少在winforms绑定中;所以我认为这也适用于WPF)。因此,如果您有List<BaseClass>,则只会显示BaseClass的属性。请尝试使用List<DerivedClass>

答案 2 :(得分:0)

尝试使用List<ChildClass>代替List<BaseClass>

答案 3 :(得分:0)

我认为您可以绑定属于子类的DataGridColumn。

相应子类的子类class.property名称的对象名称