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中
的“说明”栏是否有人可以帮助?
为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;
}
如果你控制类,这绝对是一种方式,你不介意添加一个只用于视图的额外属性,并且你不需要担心该列中的值发生变化(提高属性更改通知可能会很痛苦)。这对于简单的情况非常有效。 –
@BradleyUffner我总是认为他们在控制...我现在看到,我不应该总是这样做。谢谢! –
即使使用转换器我们也可以做到这一点。 – techknackblogs
我删除了我的答案,因为它不适用'CellTemplate'内的'DataTemplate'。 –