0

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

非常感谢隐藏组的任何帮助(甚至是实现相同目标的更好方法)。

谢谢

4

1 回答 1

0

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

于 2010-09-28T19:38:46.293 回答