WPF:隐藏所有内容时隐藏ListBox组

时间:2010-09-28 11:34:11

标签: wpf listbox listboxitem

我正在开发一个包含一些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个项目,这项工作也很快。我现在遇到的问题是,虽然现在隐藏了我想隐藏的各个项目,但这会使所有组标题仍然可见,我看不到任何隐藏它们的方法。

非常感谢任何隐藏群组的帮助(甚至更好的方法来实现同样的事情)。

由于

1 个答案:

答案 0 :(得分:0)

创建一个列表框,其中包含标题和内部列表框作为项目模板。标题显示组名称,内部列表框显示分组的项目。现在,您需要做的就是隐藏外部列表框中的项目,组标题及其项目将会消失。