1. 程式人生 > 其它 >適用於LixtBox的,開啟UI虛擬化時,某些時候需要定位到還沒載入的項,比如自動選中某項,檢視自動移過去等等

適用於LixtBox的,開啟UI虛擬化時,某些時候需要定位到還沒載入的項,比如自動選中某項,檢視自動移過去等等

 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();//檢視定位
         }