2009-06-04 9 views
0

私は、観察可能なコレクションにバインドされた階層データテンプレートを持つTreeViewを持っています。コレクションのロードが完了すると、特定のTreeViewItemを選択し、TreeViewにフォーカスを移動するコードを実行します。アイデアは、ユーザーが矢印キーを使用してTreeView内のエントリをスクロールできる必要があるということです。ポピュレートされているときにTreeViewにフォーカスがあるように見えますが、Arrtowキーは選択範囲をスクロールしません。ツリービューがどこかでクリックされると、矢印キーが機能し、実際にはTreeViewにフォーカスがないことが示唆されます。関連するコードは次のとおりです。Silverlight 3 - TreeViewがフォーカスを取得しない

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(); 
      }); 

ご協力いただければ幸いです。

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

をし、私はいくつかのツリー項目を展開したいとき:

答えて

0

私は、XAMLでこのコードを持っています。私は

...

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

はその助けを願って、これを実行します