WPF TreeView 虚拟化-设置滚动到选中项

列表滚动到具体的数据项?

ListBox提供了简易快捷的滚动定位函数ScrollIntoView。

TreeView树状结构列表,则没有此类方法,无法与ListBox一样,直接设置滚动到具体的数据项。

同时,SelectedItem也是只读的,无法设置SelectedItem来间接的设置滚动项。

TreeView滚动定位

1. 对TreeViewItem添加一个附加属性IsScrolledToViewWhenSelected,在属性变更事件中,添加对Loaded事件的订阅和注销

1 static void OnIsScrolledToViewWhenSelectedChanged( 2 DependencyObject depObj, DependencyPropertyChangedEventArgs e) 3 { 4 if (depObj is TreeViewItem treeViewItem && e.NewValue is bool isIntoViewWhenSelected) 5 { 6 treeViewItem.Loaded -= TreeViewItem_Loaded; 7 if (isIntoViewWhenSelected) 8 { 9 treeViewItem.Loaded += TreeViewItem_Loaded; 10 } 11 } 12 }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpwfzd.html