2010-07-01 5 views
2

Je dispose d'une zone de liste et son modèle d'élément comporte une case à cocher. Maintenant, lorsque je clique sur la case à cocher dans la zone de liste, il définit l'état vérifié de la case à cocher. Si j'utilise la touche "Espace" du clavier, je ne peux pas changer l'état de la case à cocher.Mise au point clavier sur les éléments de la zone de liste dans WPF

Remarque: Le raccourci clavier fonctionne une fois que j'ai activé la case à cocher en cliquant dessus.

Répondre

2

Si vous ne voulez pas la zone de liste pour fournir la sélection du tout, vous pouvez utiliser un ItemsControl simple au lieu d'un ListBox:

<ItemsControl ItemsSource="{Binding}"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <CheckBox Content="{Binding}"/> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

Ensuite, vous aurez juste une séquence de cases à cocher, sans les envelopper avec ListBoxItem contrôles qui prendront le focus du clavier. D'autre part, si vous voulez que la ListBox affiche la sélection, alors vous voulez peut-être un ListBox à sélection multiple où l'état du CheckBox est lié à l'état sélectionné du ListBoxItem. Puisque le fait de cliquer sur le ListBoxItem vérifiera le CheckBox, vous pourriez empêcher le CheckBox d'être concentré du tout:

<ListBox ItemsSource="{Binding}" SelectionMode="Multiple"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <CheckBox 
       Content="{Binding}" 
       Focusable="False" 
       IsChecked="{Binding IsSelected, RelativeSource= 
        {RelativeSource AncestorType={x:Type ListBoxItem}}}" /> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 
Questions connexes