我有一个TreeView,其中包含一个绑定到可观察集合的分层数据模板。当集合加载完成后,我运行一些代码来选择特定的TreeViewItem,然后将焦点放到TreeView上。其思想是用户应该能够使用箭头键在TreeView中滚动条目。填充TreeView时,它看起来具有焦点,但箭头键不会滚动选择。如果随后在任意位置单击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();
});任何帮助都将不胜感激。
发布于 2009-08-26 13:51:47
我用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);
}希望能帮上忙。
https://stackoverflow.com/questions/950653
复制相似问题