欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

WPF中ScrollViewer滚动条自动滚动到最上方

程序员文章站 2022-06-08 18:40:47
...

参考链接:https://social.msdn.microsoft.com/Forums/vstudio/en-US/bab3fb62-bf9e-4db6-854c-829bd2896319/how-to-prevent-scrollviewer-from-calling-bringintoview?forum=wpf

问题描述:WPF中点击一个文件夹A,A的子文件不能完全显示在视图里面,此时右键点击A文件夹,滚动条会自动滚动直到A文件夹处在视图的最上方,右键打开的Menu还会停留在A文件夹原来的位置

 解决:TreeView下面添加事件OnRequestBringIntoView

<EventSetter Event="TreeViewItem.RequestBringIntoView" Handler="OnRequestBringIntoView">

事件OnRequestBringIntoView实现方法

private void OnRequestBringIntoView(object sender, RequestBringIntoViewEventArgs e)
{
    e.Handled = true;
}

 问题就解决了,其中RequestBringIntoView此事件向父ScrollViewer(或派生类)表明,引发RequestBringIntoView事件的元素应该在可滚动区域内可见。然后,通过使用事件的类处理,ScrollViewer将RequestBringIntoView事件标记为已处理。通常,RequestBringIntoView事件数据不应该由控制滚动区域的任何类或任何实例处理程序标记处理,因为这样做会干扰名为BringIntoView的元素的预期目标。(来自MSDN)