我正在尝试用List<>
多个对象填充DataGrid。这些对象都是基类固有的。我成功地显示了DataGrid中的列和行,但是我只看到基类的属性而不是子类的属性。
不幸的是,我在搜索网页时找不到很多有用的信息。但我仍然是WPF和C#的新手,所以也许这就是问题......
如何让DataGrid显示基类和子类的所有属性?
编辑:
我有一些继承自BaseClass的类(比如A,B,C),我有一个类型List<BaseClass>
的列表,它包含多个类型的多个对象。我需要在DataGrid中显示所有不同的子类。
答案 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名称的对象名称