底部的列表框项没有被自动选中

本文关键字:列表 底部 | 更新日期: 2023-09-27 18:15:37

我有这个关于列表框行为的微妙程序。我的列表框与视图模型中的一个可观察列表绑定在一起。在列表框中添加项目有两种方法。首先是添加单个项目,然后该项目将被直接选中。这很好。

第二种方法是LOAD,顾名思义,它将在lisbox中添加多于1个项目。现在的问题是,当加载的项目超过列表框可以容纳在视图中,那些不在视图中的项目(项目在底部,因此需要滚动,以便它被查看)没有被自动选中…

只有默认查看的项目才会被选中:

private void ItemContainerGenerator_StatusChanged(object sender, EventArgs e)
{
  if (listBoxAddresses.ItemContainerGenerator.Status != GeneratorStatus.ContainersGenerated) return;
  for (int i = 0; i < TestSetting.DeviceSettings.Count; i++)
  {
    ListBoxItem myListBoxItem = (ListBoxItem)(listBoxAddresses.ItemContainerGenerator.ContainerFromItem(TestSetting.DeviceSettings[i]));
    if (myListBoxItem != null)
    {
      myListBoxItem.IsSelected = true;
    }
  }
  listBoxAddresses.ItemContainerGenerator.StatusChanged -= ItemContainerGenerator_StatusChanged;
}

我想知道这是否是listbox的自然行为

底部的列表框项没有被自动选中

我现在才意识到…设置我的列表框为:

VirtualizingStackPanel.IsVirtualizing="False"

做了所有的技巧。感谢wpf博士的想法。虽然关闭虚拟化会带来一些后果(性能),但这并不重要。