我们说我有一个名为ICar
的接口,它由两个类实现; BMW
和Audi
。它们包含名称和内容(汽车的可视化)。我想得到名字"宝马"和#34;奥迪"并将它们列在组合框中。因此,一旦用户选择了名称,就应该出现对象内容。这就是我迄今为止所做的。
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}" />
但我没有得到这两个价值观&#34;奥迪&#34;和&#34;宝马&#34;在组合框内。请告诉我是否做错了。
答案 0 :(得分:0)
请使用observableCollection而不是List。
#include <string>
#include <cstdlib>
std::uint8_t getNum(char hexChar)
{
if(hexChar >= '0' && hexChar <= '9')
{
return hexChar - '0';
}
return (hexChar-'A'+10);
}
int main()
{
std::uint8_t mac[6];
std::string str = "01:23:45:AB:CD:EF";
std::uint8_t j = 0;
for(std::uint8_t i = 0; i<6; ++i)
{
mac[i] = getNum(str[j])*16 + getNum(str[j+1]);
j+=3; // get to the next substring
}
}
答案 1 :(得分:0)
获取实现接口的类列表:
ICar
ICar
。这是一个例子。为了演示,我正在寻找与接口(ICar
)相同的程序集中的类。
var assembly = Assembly.GetAssembly(typeof (ICar));
var typesInAssembly = assembly.GetTypes();
var matching = typesInAssembly
.Where(type => typeof(ICar).IsAssignableFrom(type) && !type.IsInterface);
// Checking !type.IsInterface or else it also returns ICar.