Nehmen wir an, ich habe eine Schnittstelle namens ICar
und es wird von zwei Klassen implementiert; BMW
und Audi
. Sie enthalten den Namen und den Inhalt (Visualisierung des Autos). Ich möchte die Namen "BMW" und "Audi" erhalten und in Combo Box auflisten. Sobald der Benutzer den Namen auswählt, sollte der Objektinhalt angezeigt werden. Das was ich bisher gemacht habe.Wie erhalte ich eine Liste von Objekten, die dieselbe Schnittstelle erben?
interface ICar{
String Name {get;}
object Content{get;}
}
Es wird von zwei Klassen geerbt, Audi
und 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
und AudiCar
haben die Visualisierung von BMW und Audi Auto.
In MainModel
Klasse,
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;}
}
}
Im XAML,
xmlns:local="clr-namespace:WpfApplication1"
<ComboBox ItemsSource="{Binding Cars}" DisplayMemberPath="Name" SelectedItem="{Binding SelectedCar, Mode=TwoWay}" />
Aber ich bin nicht die beiden Werte "Audi" und "BMW" in der Combo-Box zu bekommen. Bitte sag, ob ich etwas falsch gemacht habe.
Sie wissen nicht über die Antwort, aber ich bin nicht sicher, dass Sie Felder innerhalb einer Schnittstelle (C# 5?) Bereitstellen können, so die beste Praxis zuerst ist, eine abstrakte Klasse namens Auto zu haben. –
Hinweis: Verwenden Sie auch eine Schnittstelle für den Inhalt –
@OriRefael C# Schnittstellen erlauben die Definition von Eigenschaften. Ref: http://stackoverflow.com/questions/3754274/interface-class-with-getter-and-setter-in-c-sharp – Giggity