我正在开发一个包含一些 ListBox 信息的应用程序,这些信息可能包含相当多的信息(可能多达 6 或 700 个复杂项目 - 多个文本字段和图像)。
我使用 ListBox 控件是为了使用您通过它获得的分组、排序和过滤功能,但事实证明过滤非常慢(并且 UI 的响应能力对应用程序很重要)。
因此,我现在不是使用上述任何一种方法,而是通过更改 ListBoxItem 的可见性进行过滤,使用如下所示:
foreach (MyItemType item in myListBox.ItemsSource)
{
ListBoxItem lbi = (ListBoxItem)(myListBox.ItemContainerGenerator.ContainerFromItem(item));
if (item.Name.Contains("blah"))
{
lbi.Visibility = Visibility.Visible;
lbi.IsEnabled = true;
}
else
{
lbi.Visibility = Visibility.Collapsed;
lbi.IsEnabled = false;
}
}
即使 ListBox 中有超过 500 个项目,这也能很快工作。我现在有一个问题,虽然我想要隐藏的单个项目现在被隐藏了,但这使得所有组标题仍然可见,我看不到任何隐藏它们的方法。
非常感谢隐藏组的任何帮助(甚至是实现相同目标的更好方法)。
谢谢