Я работаю над приложением, имеющим некоторую информацию 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. Теперь у меня есть проблема, заключающаяся в том, что, хотя отдельные элементы, которые я хочу скрыть, теперь скрыты, все заголовки группы остаются видимыми, и я не вижу способа скрыть их от просмотра.
Любая помощь в сокрытии групп (или даже лучший способ достижения того же самого) высоко ценится.
Спасибо