2009-06-04 7 views
0

J'ai un TreeView avec un modèle de données hiérarchique lié à une collection observable. Lorsque la collection est chargée, j'exécute du code qui sélectionne un TreeViewItem spécifique et doit ensuite mettre le focus sur TreeView. L'idée est que l'utilisateur devrait pouvoir utiliser les touches fléchées pour faire défiler les entrées dans TreeView. Le TreeView semble avoir le focus quand il est rempli, mais les touches arrtow ne font pas défiler la sélection. Si TreeView est ensuite cliqué n'importe où, les touches fléchées fonctionnent, ce qui suggère que le TreeView n'a pas de focus. Le code pertinent est:Silverlight 3 - TreeView n'obtenant pas le focus

Dispatcher.BeginInvoke(delegate 
      { 
       TreeViewAutomationPeer trvAutomation = 
       (TreeViewAutomationPeer)TreeViewAutomationPeer.CreatePeerForElement(TreeViewIndex); 

       IScrollProvider scrollingAutomationProvider = 
        (IScrollProvider)trvAutomation.GetPattern(PatternInterface.Scroll); 
       IndexEntry highScoreEntry = _currentIndexViewModel.HighScoreEntry; 
       TreeViewItem myItem = TreeViewIndex.ContainerFromItem(highScoreEntry); 
       TreeViewIndex.Focus(); 
       myItem.IsSelected = true; 
       if (scrollingAutomationProvider.HorizontallyScrollable) 
        scrollingAutomationProvider.SetScrollPercent(0, scrollingAutomationProvider.VerticalScrollPercent); 
       TreeViewIndex.Focus(); 
      }); 

Toute aide serait grandement appréciée.

Répondre

0

Je possède ce code XAML:

<ScrollViewer Name="_treeScroll"> 
      <controls:TreeView x:Name="_tree"/> 
</ScrollViewer> 

et quand je veux développer quelques TreeItem. Je lance ce

private void ExpandTreeViewItem(TreeViewItem tvi) 
     { 
      tvi.IsSelected = true; 
      tvi.IsExpanded = true; 
      tvi.UpdateLayout(); 
      _treeScroll.ScrollIntoView(tvi); 
     } 

Espérer son aide ...

Questions connexes