zoukankan      html  css  js  c++  java
  • 适用于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();//视图定位             
             }
  • 相关阅读:
    N^N hdu1060
    二叉树的所有操作
    溢出问题
    POJ1562深搜问题
    已知前序,中序,求后序
    交换a,b
    深度和广度优先搜索
    最长回文子串
    scanf
    WCF Ria Service 理解
  • 原文地址:https://www.cnblogs.com/xuling-297769461/p/14925606.html
Copyright © 2011-2022 走看看