我正在开发一个包含一些ListBox信息的应用程序,它们可能包含大量信息(可能包含多达6或700个复杂项目 - 多个文本字段和图像)。
我使用ListBox控件来使用你用它获得的分组,排序和过滤功能,但事实证明过滤非常慢(并且UI的响应性对应用程序很重要)。 / p>
所以现在我不是使用上述任何一种方法,而是使用以下方法更改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个项目,这项工作也很快。我现在遇到的问题是,虽然现在隐藏了我想隐藏的各个项目,但这会使所有组标题仍然可见,我看不到任何隐藏它们的方法。
非常感谢任何隐藏群组的帮助(甚至更好的方法来实现同样的事情)。
由于
答案 0 :(得分:0)
创建一个列表框,其中包含标题和内部列表框作为项目模板。标题显示组名称,内部列表框显示分组的项目。现在,您需要做的就是隐藏外部列表框中的项目,组标题及其项目将会消失。