WPF: Скрыть группы ListBox, когда все содержимое скрыто - PullRequest
0 голосов
/ 28 сентября 2010

Я работаю над приложением, имеющим некоторую информацию ListBox, возможно, оно может содержать довольно много информации (может быть до 6 или 700 сложных элементов - несколько текстовых полей и изображений).

Я использовал элемент управления ListBox, чтобы использовать функции группировки, сортировки и фильтрации, которые вы получаете вместе с ним, но оказывается, что фильтрация очень медленная (и отзывчивость пользовательского интерфейса важна для приложения).

Итак, где я сейчас нахожусь, вместо того, чтобы использовать любой из вышеперечисленных методов, я фильтрую, изменяя видимость 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;
                }
            }

Это работает очень быстро даже с более чем 500 элементами в ListBox. Теперь у меня есть проблема, заключающаяся в том, что, хотя отдельные элементы, которые я хочу скрыть, теперь скрыты, все заголовки группы остаются видимыми, и я не вижу способа скрыть их от просмотра.

Любая помощь в сокрытии групп (или даже лучший способ достижения того же самого) высоко ценится.

Спасибо

1 Ответ

0 голосов
/ 28 сентября 2010

Создать список, который содержит в качестве шаблона элемента заголовок и внутренний список. Заголовок показывает имя группы и внутренний список сгруппированных элементов. Теперь все, что вам нужно сделать, это скрыть элемент во внешнем списке, и заголовок группы и его элементы исчезнут.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...