Lorsque l'on crée un Objet valeur sans logique, il est souvent nécessaire de récupérer la liste de ses propriétés ou de ses champs statiques. De cette manière vous pouvez l'affecter à une propriété ItemsSource de ComboBox ou d'AutoCompleteBox et ainsi, filtrer une listBox de ValueObject. Sous Silverlight, rien n'est réellement prévu à cet effet. Il serait possible de créer une énumération en affectant des attributs à chacune des valeurs contenues. Toutefois cette méthode est un peu lourde, avec un peu de réflexion on arrive à un résultat efficace sans se compliquer la vie. Il faut tout d'abord créer une classe contenant les champs ou les propriétés statiques :
public static class WindowsPhone7
{
public static string Undefined = " ";
public static string Omnia7= "Samsung Omnia 7";
public static string Focus= "Samsung Focus";
public static string HD7= "HTC HD 7";
public static string Optimus7= "LG Optimus 7";
public static string VenuePro= "Dell venue Pro";
}
Ensuite côté VueModèle, vous pouvez exposer une liste de ces dernières grâce à un peu de réflexion et à Linq :
public List<String> WP7Types
{
get
{
Type t = typeof(WindowsPhone7);
//GetProperties en lieu et place de getFields si beseoin
var call = (from opp in t.GetFields() select opp.GetValue(t) as string).ToList();
return call;
}
}
Rien d'autre à faire à part un binding sur le ItemsSource d'un ItemsControl et le tour est joué