Я борюсь с фильтрацией listView. Я попробовал 2 метода для фильтрации без удаления выбранных элементов. Моя проблема: всякий раз, когда выбранный элемент исчезает из-за фильтра, он больше не выбирается, когда он возвращается. Мои методы:WPF-фильтрация ListView удаляет выбранные элементы
Само написанный код:
try
{
string s = isci_tb.Text;
if (isci_tb.Text == "")
{
osebe_listView.Items.Clear();
foreach (Oseba o in seznamOseb)
{
osebe_listView.Items.Add(o);
}
}
else
{
osebe_listView.Items.Clear();
foreach (Oseba o in seznamOseb)
{
if (contejns(o.ime, s) || contejns(o.priimek, s) || contejns(o.mobilnaSt.ToString(), s) || contejns(o.posta, s) || contejns(o.nazivPodjetja, s) || contejns(o.stacionarnaSt.ToString(), s) || contejns(o.naslov, s) || contejns(o.eMail, s))
{
osebe_listView.Items.Add(o);
}
}
}
}
catch { }
Что это делает он ищет все элементы и Потазывает только один, который соответствует с его фильтрации, но этот метод удаляет элементы comepletly и повторно добавляет их. Я попытался добавить значение для выбранных элементов, которое сохраняет onSelectionChanged и используется, когда фильтр изменен, но он не работает.
Второй способ был от this tutorial. Я надеялся, что это сработает, потому что оно использует фильтр, но, по-видимому, у него такая же проблема.
Как я могу установить свойство o.isVisible, если в Oseba его нет? Я думаю, вы хотите установить объекты с не равным фильтром в visible = false, правильно? Как я мог это сделать? Я пытаюсь это прямо сейчас – someone1
Я был в предположении, что у вас есть контроль над классом «Oseba» и вы можете определить свойство IsVisible на нем. – mbger
Oseba - это только класс данных, который имеет свойства, которые отображаются в ListView. – someone1