Prevent Automatic Horizontal Scroll in TreeView

前端 未结 8 974
伪装坚强ぢ
伪装坚强ぢ 2020-12-14 06:41

Whenever a node is selected in my treeview, it automatically does a horizontal scroll to that item. Is there a way to disable this?

8条回答
  •  鱼传尺愫
    2020-12-14 07:20

    Matthew, I manged to preserve vertical scrolling, and only prevent horizontal scrolling by restoring the horizontal position after a scroll caused by the RequestBringIntoView event .

    private double treeViewHorizScrollPos = 0.0;
    private bool treeViewResetHorizScroll = false;
    private ScrollViewer treeViewScrollViewer = null;
    
    private void TreeViewItemRequestBringIntoView( object sender, RequestBringIntoViewEventArgs e )
    {
        if ( this.treeViewScrollViewer == null )
        {
            this.treeViewScrollViewer = this.DetailsTree.Template.FindName( "_tv_scrollviewer_", this.DetailsTree ) as ScrollViewer;
            if( this.treeViewScrollViewer != null )
                this.treeViewScrollViewer.ScrollChanged += new ScrollChangedEventHandler( this.TreeViewScrollViewerScrollChanged );
        }
        this.treeViewResetHorizScroll = true;
        this.treeViewHorizScrollPos = this.treeViewScrollViewer.HorizontalOffset;
    }
    
    private void TreeViewScrollViewerScrollChanged( object sender, ScrollChangedEventArgs e )
    {
        if ( this.treeViewResetHorizScroll )
            this.treeViewScrollViewer.ScrollToHorizontalOffset( this.treeViewHorizScrollPos );
    
        this.treeViewResetHorizScroll = false;
    }
    

提交回复
热议问题