2010-09-28 120 views
0

我正在处理具有一些ListBox信息的应用程序,这些应用程序可能包含相当多的信息(可能包含多达6或700个复杂项目 - 多个文本字段和图像)。WPF:当隐藏所有内容时隐藏ListBox组

我使用了ListBox控件为了使用它的分组,排序和过滤功能,但事实证明过滤非常慢(并且UI的响应对于应用程序很重要)。

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; 
       } 
      } 

这个拥有超过500项的工作非常快,甚至:

那么,我现在是使用上述任何一种方法,而不是,我是通过改变ListBoxItem中的使用是这样的知名度过滤在ListBox中。我现在有这样的问题,即使我想要隐藏的单个项目现在已隐藏,但仍然可以看到所有组标题仍然可见,并且看不到任何隐藏它们的方法。

任何帮助隐藏小组(或甚至更好的方式来实现相同的事情)非常感谢。

谢谢

回答

0

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