假設我有一個名爲ICar
的接口,它由兩個類實現; BMW
和Audi
。它們包含名稱和內容(汽車的可視化)。我想獲得名字「寶馬」和「奧迪」,並將它們列入組合框。所以一旦用戶選擇對象內容應該出現的名稱。這是我迄今爲止所做的。如何獲得繼承相同接口的對象列表?
interface ICar{
String Name {get;}
object Content{get;}
}
它是由兩個類,Audi
和BMW
繼承。
class Audi : ICar{
AudiCar audi = new AudiCar();
String Name{get {return"Audi";}}
object Content{get {return audi;}}
}
class BMW : ICar{
BMWCar bmw = new BMWCar();
String Name{get {return"BMW";}}
object Content{get {return bmw;}}
}
BMWCar
和AudiCar
有寶馬和奧迪車的可視化。
在MainModel
類,
Class MainModel{
List<ICar> cars;
ICar selectedCar;
MainModel(IEnumerable<ICar> cars){
this.cars = new List<ICar>(cars);
this.selectedCar = this.cars.FirstOrDefault();
}
IList<ICar> Cars {get{return this.cars;}}
public object Car{
get{ return this.selectedCar.Content;}
}
}
在XAML,
xmlns:local="clr-namespace:WpfApplication1"
<ComboBox ItemsSource="{Binding Cars}" DisplayMemberPath="Name" SelectedItem="{Binding SelectedCar, Mode=TwoWay}" />
但我沒有得到這兩個值 「奧迪」 和 「寶馬」 組合框裏面。請告訴我是否做錯了什麼。
不知道答案,但我不知道你可以提供一個接口(C#5?)內的字段,所以最好的做法首先是有一個名爲汽車的抽象類。 –
旁註:還使用內容的接口 –
@OriRefael C#接口確實允許定義屬性。參考:http://stackoverflow.com/questions/3754274/interface-class-with-getter-and-setter-in-c-sharp – Giggity