2010-03-01 5 views
2

J'ai donc un TreeView comme celui ci-dessous, avec certains éléments cachés. Si j'essaie de passer à travers l'arbre en utilisant les touches fléchées, je suis bloqué sur les objets qui entourent les objets "effondrés". Essayez-le vous-même.La navigation au clavier échoue lorsqu'il y a des éléments cachés dans TreeView

 

<Window x:Class="Example.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="TreeViewBug" Height="300" Width="300"> 
    <Grid> 
     <TreeView> 
      <TreeViewItem Header="a." /> 
      <TreeViewItem Header="b" Visibility="Collapsed" /> 
      <TreeViewItem Header="c." /> 
      <TreeViewItem Header="d" /> 
      <TreeViewItem Header="e." /> 
      <TreeViewItem Header="f" Visibility="Collapsed"/> 
      <TreeViewItem Header="g." /> 
      <TreeViewItem Header="h" /> 
     </TreeView> 
    </Grid> 
</Window> 
 

Personne d'autre semble avoir posté cette question (ou blog à ce sujet) et donc je poste dans l'espoir d'obtenir une solution non-aki à ce sujet. Alors, voici ma question:

Comment réparer ce bug?

Je prévois d'étendre le TreeView par défaut pour ignorer les éléments avec la visibilité définie sur Hidden/Collapsed ou IsEnabled défini sur false. Quelqu'un d'autre a-t-il déjà rencontré cela et trouvé une bonne solution?

Répondre

5

Je ne comprends pas pourquoi cela arrive. je pouvais le réparer en ajoutant:

IsEnabled="False" 

aux articles effondrés. Ensuite, la navigation fonctionne comme prévu.

3

Voici une solution qui fonctionne: Désactivez l'élément que vous cachez. Si l'élément est désactivé, la navigation au clavier fonctionne comme prévu. Ainsi, lorsque vous définissez la visibilité de l'élément, définissez IsEnabled sur false lorsque l'élément n'est pas visible.

Essayez le code dans la question, mais ajoutez IsEnabled = "false" à tous les éléments réduits. Ça devrait marcher.

Questions connexes