Silverlight 3 - TreeView не получает фокус - PullRequest
0 голосов
/ 04 июня 2009

У меня есть TreeView с шаблоном иерархических данных, привязанным к наблюдаемой коллекции. Когда коллекция завершит загрузку, я запускаю некоторый код, который выбирает конкретный 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 голосов
/ 26 августа 2009

У меня есть этот код в xaml:

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

и когда я хочу раскрыть некоторые элементы дерева. Я управляю этим

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

Надеюсь на помощь ...

...