J'essaye de créer un comportement de mélange lié aux ComboBoxes. Afin d'obtenir l'effet que je veux, le ItemsPanel de la ComboBox doit avoir un certain élément ajouté. Je ne veux pas faire cela dans chaque ComboBox qui utilise le comportement, donc je veux que le Comportement puisse injecter le ItemsPanelTemplate par programmation. Cependant, je n'arrive pas à trouver un moyen de le faire. ItemsPanelTemplate ne semble pas avoir une propriété/méthode qui me permet de définir l'arborescence visuelle. WPF ItemsPanelTemplate a le VisualTree mais Silverlight ne le fait pas.Créer par programme ItemsPanelTemplate pour Silverlight ComboBox?
Fondamentalement, quel est l'équivalent programmatique de ce XAML?
<ComboBox>
<ComboBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel/>
</ItemsPanelTemplate>
</ComboBox.ItemsPanel>
</ComboBox>
Edit:
Bon apparemment, ce n'est pas une question facile, alors j'ai commencé une prime et je vais donner un peu plus de fond dans le cas où il y a une autre façon d'aller à ce sujet. Je veux fournir un support clavier pour la ComoboBox Silverlight. Une fois sorti de la boîte, il ne supporte que les flèches haut et bas, mais je veux aussi qu'il fonctionne de sorte que lorsque l'utilisateur frappe une lettre, la ComboBox saute au premier élément de cette lettre, similaire au ComboBox fonctionne dans un navigateur ou une application Windows .
J'ai trouvé this blog post, ce qui m'a permis de faire la moitié du chemin. En adaptant ce code de comportement, la ComboBox changera la sélection en fonction de la saisie de lettre. Cependant, cela ne fonctionne pas lorsque le ComboBox est ouvert. La raison pour cela, selon this blog post est que lorsque le ComboBox est ouvert, vous êtes maintenant en interaction avec son ItemsPanel et non le ComboBox lui-même. Donc, selon ce post, j'ai besoin d'ajouter un StackPanel au ItemsPanelTemplate et de m'abonner à l'événement KeyDown de StackPanel, afin de prendre des mesures lorsque le ComboBox est ouvert.
Voilà donc ce qui m'a conduit à demander comment obtenir un StackPanel dans le ItemsPanelTemplate d'un ComboBox, à partir d'un comportement. Si ce n'est pas possible, y a-t-il d'autres moyens de faire en sorte que cela fonctionne? Oui, je sais que je pourrais aller à chaque ComboBox dans l'application et ajouter un StackPanel et l'événement. Mais je veux le faire par le biais d'un comportement afin que je n'ai pas à modifier chaque ComboBox dans l'application, et ainsi je peux réutiliser cette logique à travers les applications.
La réponse d'AnthonyWJones ci-dessous à l'aide de XamlReader m'amène à me rendre compte que je peux créer le StackPanel et l'intégrer au modèle. Cependant, je dois être en mesure d'obtenir ce SP par programme afin de m'abonner à l'événement.
Commencer une prime à ce sujet. Aller à modifier pour fournir plus de détails sur le problème réel pour voir s'il existe une autre solution. – RationalGeek