WPF绑定到派生对象属性

问题描述:

我有抽象类Vehicle,并从那3个具体类继承了即博,汽车和飞机。WPF绑定到派生对象属性

现在我已经拥有ID,数量和车辆

class data 
{ 
    public int ID {get; set} 
    public int Quantity {get; set;} 
    public Vehicle Vehicle {get; set;} 
} 

一个对象的集合现在我有数据,即IEnumerable<data>的视图模型

集合,我结合这DataGrid中。

现在一些属性CAR对象可能有哪些飞机和船对象可能没有,反之亦然。

如何识别集合中存在哪个具体对象,并相应地显示在说明列中。

对于CAR我想要显示属性的数据REVIEW。 对于飞机,我想显示属性NOTES的数据,也类似的船。

上述所有特性的数据应该都在DataGrid中

的“说明”栏是否有人可以帮助?

+0

我删除了我的答案,因为它不适用'CellTemplate'内的'DataTemplate'。 –

为Vehicle类添加一个抽象描述属性,并确保从类继承的类将正确的信息放入该类中。然后,UI将具有一致的绑定。

abstract class Vehicle 
{ 
    public abstract string Description { get; } 
} 

class Aeroplane : Vehicle 
{ 
    public string Notes { get; set; } 
    public override string Description => Notes; 
} 

class Car : Vehicle 
{ 
    public string Review { get; set; } 
    public override string Description => Review; 
} 

class Boat : Vehicle 
{ 
    public string Notes { get; set; } 
    public override string Description => Notes; 
} 
+0

如果你控制类,这绝对是一种方式,你不介意添加一个只用于视图的额外属性,并且你不需要担心该列中的值发生变化(提高属性更改通知可能会很痛苦)。这对于简单的情况非常有效。 –

+0

@BradleyUffner我总是认为他们在控制...我现在看到,我不应该总是这样做。谢谢! –

+0

即使使用转换器我们也可以做到这一点。 – techknackblogs