Silverlight 3 - TreeView无法获得焦点

时间:2009-06-04 13:38:22

标签: c# silverlight treeview

我有一个TreeView,其中一个Hierarchical Data Template绑定到一个可观察的集合。当集合完成加载时,我运行一些选择特定TreeViewItem的代码,然后应该将焦点带到TreeView。这个想法是用户应该能够使用箭头键滚动TreeView中的条目。 TreeView在填充时似乎具有焦点,但是arrtow键不会滚动选择。如果随后在任何地方单击TreeView,则箭头键会起作用,这表明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();
            });

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我在xaml中有这段代码:

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

当我想扩展一些treeItem时。我跑这个

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

希望它的帮助......