【问题标题】:WPF TreeView Scrolled to Bottom automatically?WPF TreeView自动滚动到底部?
【发布时间】:2011-06-30 18:16:53
【问题描述】:

WPF 默认的 TreeView 会自动滚动到节点的底部,因为我们需要显示树视图的顶视图。该怎么做?

我也无法通过沿着可视树走来获得滚动查看器。

【问题讨论】:

    标签: c# .net wpf xaml


    【解决方案1】:

    预选顶部节点并在选择更改事件上调用 TreeViewItem.BringIntoView 方法。调用 TreeView.ItemContainerGenerator.ContainerFromItem(e.NewValue) 来获取 TreeViewItem。

    【讨论】:

      【解决方案2】:

      这段代码很粗糙。 让 TreeViewItem.BringIntoView() 将项目移至顶部的关键是首先将 TreeView 滚动到底部而不是顶部。 为此,我们需要首先访问 TreeView 的控件模板中的 ScrollViewer。很多关于 IMO 的混乱,应该从一开始就在框架中提供。

      在这种情况下,您的项目控件应该是您试图到达顶部的 TreeViewItem。 uxTree 控件是 TreeView。

      item.IsSelected = true;
      ScrollViewer scroller = (ScrollViewer)this.FindVisualChildElement(this.uxTree, typeof(ScrollViewer));
      scroller.ScrollToBottom();
      item.BringIntoView();
      
      private FrameworkElement FindVisualChildElement(DependencyObject element, Type childType)
      {
          int count = VisualTreeHelper.GetChildrenCount(element);
      
          for (int i = 0; i < count; i++)
          {
              var dependencyObject = VisualTreeHelper.GetChild(element, i);
              var fe = (FrameworkElement)dependencyObject;
      
              if (fe.GetType() == childType)
              {
                  return fe;
              }
      
              FrameworkElement ret = null;
      
              if (fe.GetType().Equals(typeof(ScrollViewer)))
              {
                  ret = FindVisualChildElement((fe as ScrollViewer).Content as FrameworkElement, childType);
              }
              else
              {
                  ret = FindVisualChildElement(fe, childType);
              }
      
              if (ret != null)
              {
                  return ret;
              }
          }
      
          return null;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-25
        • 1970-01-01
        • 2016-11-13
        • 1970-01-01
        • 2016-09-15
        • 2018-08-21
        • 2012-01-18
        • 1970-01-01
        相关资源
        最近更新 更多