问题描述:WPF中ScrollViewer嵌套ListBox,ListBox进行了分组显示,当我滚动到最下面的分组后,点击某一项,滚动条会自动滚动到视图的最上方

解决:ListBox下面添加事件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的元素的预期目标。