私はいくつかのリストボックスの情報を持つアプリケーションに取り組んでいます.これらはかなり多くの情報を保持できる可能性があります.
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 を超える項目がある場合でも非常に迅速に機能します。非表示にしたい個々のアイテムが非表示になっているにもかかわらず、すべてのグループヘッダーが表示されたままになり、それらを非表示にする方法が表示されないという問題があります。
グループを非表示にするための助け(または同じことを達成するためのより良い方法)は大歓迎です。
ありがとう