La mise au point sur une zone de liste de l'élément de sauts de la navigation au clavier
Après la sélection de l'élément de zone de liste par programmation, il est nécessaire d'appuyer sur\touche deux fois pour déplacer la sélection. Des suggestions?
Vue:
<ListBox Name="lbActions" Canvas.Left="10" Canvas.Top="10"
Width="260" Height="180">
<ListBoxItem Name="Open" IsSelected="true" Content="Open"></ListBoxItem>
<ListBoxItem Name="Enter" Content="Enter"></ListBoxItem>
<ListBoxItem Name="Print" Content="Print"></ListBoxItem>
</ListBox>
Code:
public View()
{
lbActions.Focus();
lbActions.SelectedIndex = 0; //not helps
((ListBoxItem) lbActions.SelectedItem).Focus(); //not helps either
}
OriginalL'auteur StreamT | 2010-02-08
Vous devez vous connecter pour publier un commentaire.
Ne pas définir le focus à la zone de liste... définir le focus à l'sélectionnés ListBoxItem. Cela permettra de résoudre le "deux touches de clavier requis" problème:
Si votre zone de liste contient autre chose que
ListBoxItem
s, vous pouvez utiliserlbActions.ItemContainerGenerator.ContainerFromIndex(lbActions.SelectedIndex)
pour obtenir le générés automatiquementListBoxItem
.Si vous voulez que cela se produise au cours de fenêtre d'initialisation, vous avez besoin de mettre le code dans le
Loaded
événement plutôt que dans le constructeur. Exemple (XAML):Code (basé sur l'exemple dans votre question):
Ma réponse fonctionne toujours, il suffit de mettre le code après le
SelectedIndex = 0
.Ne fonctionne pas pour moi. L'élément sélectionné, ce n'est pas un problème. La navigation au clavier fonctionne pas correctement après.
Ah, seulement maintenant, j'ai réalisé que vous voulez initiale focus (pas l'accent en réponse à certaines bouton de la souris). OK, je vais regarder à cela.
Mise à jour de ma réponse.
OriginalL'auteur Heinzi
Vous pouvez le faire facilement en XAML. Veuillez noter que cela va régler le focus logique.
Par exemple:
OriginalL'auteur Anil Vangari