2009-02-17 10 views
1

Dans Asp.Net Combobox, il existe une propriété utile, AppendDataBoundItems, qui fait que tous les éléments liés au contrôle sont effectivement ajoutés à tout moment de conception publicitaire ajouté de manière "statique". Ceci est utile pour les valeurs "par défaut" que l'utilisateur peut spécifier lorsqu'aucun élément des attributs disponibles ne répond aux critères, ou pour spécifier un élément "valeur nulle" spécial.Comment émuler "AppendDataBoundItems" dans ComboBox de Silverlight?

Malheureusement, il n'existe aucune propriété de ce type dans Silverlight ComboBox et il n'y a aucun moyen d'être averti lorsque le contrôle a été databound.

Répondre

0

Vous pouvez peut-être faire quelque chose en remplaçant le modèle ComboBox. Cependant, la liste déroulante Silverlight a de nombreux problèmes car il s'agit d'un composant immature. Il vaudrait peut-être mieux implémenter votre propre combobox (ou utiliser l'une des implémentations trouvées sur Internet) et écrire vous-même ce comportement.

+0

Merci Jeff! Fait intéressant, j'ai le même problème ces jours-ci avec une autre application. Je penserai à quelque chose le week-end! merci encore – Intrigue

+0

@elsharpo: Notez que cette réponse a été donnée avant SL3 et 4. En SL4, le combo semble beaucoup plus poli. –

+0

Merci Jeff. Je vais vérifier quand je reçois un peu de répit de mes autres tâches! – Intrigue

0

Je suis tombé sur le même problème ces derniers jours pour les Combobox qui n'étaient pas obligatoires. La façon dont je l'ai traité était d'ajouter une valeur nulle à la collection de dire "Salutations" par exemple "Mr", "Miss" et ainsi de suite.

Ok, ma solution est moche mais ça marche .. Idéalement, j'aimerais avoir un objet bindable de type T qui enveloppe la collection ObservableCollection. Mais comme toujours, nous subissons des contraintes de temps massives et cela sera fait pour le moment.

Ajout d'une SalutationDTO à ObservableCollection comme suit.

public static void EnableNullableSalutationChoice(this ObservableCollection<SalutationDTO> salutations) 
{ 
    salutations.Insert(0, NullSalutationChoice); 
} 

    public static SalutationDTO NullSalutationChoice 
{ 
    get 
    { 
    return new SalutationDTO {Salutation = " ", SalutationID = null}; 
    } 
} 
+0

C'est plus ou moins la même solution que j'ai utilisée quand j'ai eu besoin de valeurs nulles sélectionnables dans les comboboxes et autres. Il semble que ce soit la seule méthode à moitié décente à l'heure actuelle, sauf si vous voulez construire votre propre combobox à partir de zéro. Gardez à l'esprit que cette solution devient ennuyante lorsque vous devez renvoyer une collection à la couche de service. Ensuite, vous devez supprimer manuellement l'élément "null" avant de le soumettre. Laid, mais ça marche. –

Questions connexes