適用於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();//視圖定位             
         }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章