添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

c# wpf treeview scroll to selected item

在 WPF 的 TreeView 控件中,如果想要让选中的节点始终在可见范围内,可以通过以下步骤来实现:

1.获取选中节点的索引 可以通过 TreeView 控件的 SelectedItem 属性获取当前选中的节点,然后通过 TreeView 控件的 ItemContainerGenerator 属性获取选中节点在 TreeView 中的索引。例如:

var selectedItem = myTreeView.SelectedItem;
var selectedIndex = myTreeView.ItemContainerGenerator.IndexFromContainer(selectedItem);

2.滚动到选中节点 通过 TreeView 控件的 ScrollIntoView 方法将选中节点滚动到可见范围内。例如:

myTreeView.ScrollIntoView(selectedItem);

注意:在某些情况下,选中节点可能还没有被生成为可视元素,此时 ScrollIntoView 方法可能不会生效。为了确保选中节点已经被生成为可视元素,可以使用 TreeView 控件的 ItemContainerGenerator.StatusChanged 事件,在事件处理程序中等待选中节点变为可视元素,然后再调用 ScrollIntoView 方法。例如:

var container = myTreeView.ItemContainerGenerator.ContainerFromIndex(selectedIndex) as TreeViewItem;
if (container == null)
    myTreeView.ItemContainerGenerator.StatusChanged += OnItemContainerGeneratorStatusChanged;
    container.BringIntoView();
void OnItemContainerGeneratorStatusChanged(object sender, EventArgs e)
    var generator = sender as ItemContainerGenerator;
    if (generator.Status == GeneratorStatus.ContainersGenerated)
        var container = generator.ContainerFromIndex(selectedIndex) as TreeViewItem;
        if (container != null)
            container.BringIntoView();
        generator.StatusChanged -= OnItemContainerGeneratorStatusChanged;

这样,在选中节点被生成为可视元素后,就会自动滚动到该节点所在的可见范围内了。

  •