假设我有一个名为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