列表滚动到具体的数据项?
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 }