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