1 /// <summary> 2 /// 将指定父级的下级索引元素,显示在视野下,使其可见 3 /// </summary> 4 /// <param name="control">父级</param> 5 /// <param name="i">需要可见的子集索引</param> 6 private void BringIndexIntoView(ItemsControl control, int i) 7 { 8 ItemsControl itemsControl = control; 9 itemsControl.ApplyTemplate(); 10 var itemsPresenter = VisualTreeExtension.GetElements<ItemsPresenter>(itemsControl).FirstOrDefault(); 11 if (itemsPresenter == null) 12 { 13 return; 14 } 15 itemsPresenter.ApplyTemplate(); 16 var virtualizingStackPanel = (VirtualizingStackPanel)VisualTreeHelper.GetChild(itemsPresenter, 0); 17 virtualizingStackPanel.BringIndexIntoViewPublic(i); 18 }
代码示例:
1 var index = 55;//需要定位的索引 2 BringIndexIntoView(lstbox, index); 3 var item = lstbox.ItemContainerGenerator.ContainerFromIndex(index); 4 if (item is ListBoxItem lstitem) 5 { 6 lstitem.BringIntoView();//视图定位
}