2010-04-19 11 views
1

J'ai une liste déroulante et j'essaie de sélectionner et d'item dans le code. Parfois, un élément est mis en surbrillance, c'est-à-dire que l'arrière-plan est coloré en bleu, mais un élément différent est entouré d'une case carrée bleue (pas de surlignage d'un contour creux d'une boîte). Ai-je raison de dire que l'un est "surligné" et l'autre est "sélectionné" et est-ce que je les ai identifiés correctement?silverlight 3 élément de liste déroulante surligné par rapport à sélectionné

Cela devrait-il se produire ... est-ce que ces 2 choses sont désynchronisées?

Merci Cody

Répondre

0

L'élément avec le bleu souligné fond est le SelectedItem. L'élément avec le rectangle bleu est l'élément qui actuellement croit qu'il a l'accent.

Habituellement, le rectangle de mise au point du remplissage sélectionné est trouvé ensemble, car l'élément sélectionné change généralement avec un clic de souris qui met également le focus sur le même élément. Cependant, il est possible par exemple que le code puisse changer l'élément sélectionné alors que le ListBox a encore le focus. Dans ce cas, la surbrillance sélectionnée déplacera l'élément nouvellement sélectionné mais le rectangle de focus restera là où il est. (Note au pendentif je décris ce qui apparaît à l'utilisateur pas comment les choses fonctionnent réellement sous le capot).

Pour un aperçu de ce qui se passe, voir le style ListBoxItem dans la documentation ListBox Styles and Templates.

1

J'ai juste combattu ce problème. Bien que le défilement déroulant de la liste déroulante fasse défiler automatiquement l'élément sélectionné dans la zone de liste, le premier élément aura le focus et lorsque vous décrivez l'interaction du clavier, le premier élément de la liste ne sera pas sélectionné.

Pour nous, la solution était

  this.MyListBox.UpdateLayout(); 
      this.MyListBox.Focus(); 
      this.MyListBox.SelectedItem = MyObject; 
      this.MyListBox.ScrollIntoView(this.MyListBox.SelectedItem); 

L'ordre des actions semble très important.

Ceci utilisait le défilement interne ListBox.