Question: I'm using a the TreeView control and it scrolls automatically to left-align TreeViewItem when one of them is clicked. I've gone looking at my Styles and ControlTemplates, but I haven't found anything. Is there a default ControlTemplate that causes this? I want to disable it.

Answer: 
The items scroll because the ScrollViewer calls BringIntoView() on them. So one way to avoid scrolling is to suppress the handling of the RequestBringIntoView event. You can try that out quickly by subclassing TreeView and instantiating this control instead:

```
public class NoScrollTreeView : TreeView
{
    public class NoScrollTreeViewItem : TreeViewItem
    {
        public NoScrollTreeViewItem() : base()
        {
            this.RequestBringIntoView += delegate (object sender, RequestBringIntoViewEventArgs e) {
                e.Handled = true;
            };
        }

        protected override DependencyObject GetContainerForItemOverride()
        {
            return new NoScrollTreeViewItem();
        }
    }
    protected override DependencyObject GetContainerForItemOverride()
    {
        return new NoScrollTreeViewItem();
    }
}

```
It looks like I found a good clue on [MSDN](http://social.msdn.microsoft.com/forums/en-US/wpf/thread/9abff78f-481d-4db1-a545-c461f7d19200/):

> 
> Sounds like this is an interaction
>  with the scrollviewer and the focus
>  system.
> 
> 
> When an element is focused within a
>  ScrollViewer (which is part of the
>  TreeView template), the ScrollViewer
>  is instructed to make the element
>  visible. It automatically responds by
>  scrolling to the requested element.
> 
> 
> The methods inside of ScrollViewer
>  that handle these focus requests are
>  all private and / or internal so you
>  really can't get to them. I don't
>  think there's too much you can do in
>  this case; it's just how focus works.
> 
> 
> 

So, is that it? Surely there's a way to modify the TreeView template so that the ScrollViewer won't have this behavior...