У меня есть 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();
});
Любая помощь будет высоко ценится.