C# TreeView';s滚动在节点第一次展开时跳到顶部

C# TreeView';s滚动在节点第一次展开时跳到顶部,c#,wpf,scroll,treeview,scrollviewer,C#,Wpf,Scroll,Treeview,Scrollviewer,第一次在我的TreeView中展开节点时,TreeView的ScrollViewer会将滚动条跳到顶部。在这个初始跳转之后,TreeView的滚动按预期运行 如何防止这种行为 我试过在TreeView上设置FocusManager.IsFocusScope=“True”,甚至试过做一些奇怪的事情,比如调用ScrollToTop()在加载的回调中的树视图滚动查看器上,查看是否可以触发其他情况下不会发生的某种初始化。我遇到了同样的情况,下面为我解决了这个问题。在“代码隐藏”中,创建树视图项目后,请执

第一次在我的
TreeView
中展开节点时,
TreeView
ScrollViewer
会将滚动条跳到顶部。在这个初始跳转之后,
TreeView
的滚动按预期运行

如何防止这种行为


我试过在
TreeView
上设置
FocusManager.IsFocusScope=“True”
,甚至试过做一些奇怪的事情,比如调用
ScrollToTop()
加载的
回调中的
树视图
滚动查看器
上,查看是否可以触发其他情况下不会发生的某种初始化。

我遇到了同样的情况,下面为我解决了这个问题。在“代码隐藏”中,创建树视图项目后,请执行以下操作:

TreeViewItem item = this.TreeView.ItemContainerGenerator.ContainerFromIndex(0) as TreeViewItem;
if (item != null)
{
    item.IsSelected = true;
    item.Focus();
}

在我的例子中,有一个扩展切换按钮的自定义样式,属性“Focusable”设置为False。这导致当用户展开树中的某个内容时,TreeView滚动跳转到所选项目。Solution-Focusable=“True”

您的意思是“在初始跳转之后,树视图的滚动行为与预期的一样。”在我展开一个节点(并且
TreeView
的滚动跳到顶部)之后,我可以展开节点而不经历这种跳转行为(在
TreeView
的剩余生命周期内)。