適用於LixtBox的,開啟UI虛擬化時,某些時候需要定位到還沒載入的項,比如自動選中某項,檢視自動移過去等等
阿新 • • 發佈:2021-06-24
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 varitem = lstbox.ItemContainerGenerator.ContainerFromIndex(index); 4 if (item is ListBoxItem lstitem) 5 { 6 lstitem.BringIntoView();//檢視定位
}