2017-04-14 215 views
0

我有抽象類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'。 –

回答

1

爲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