Как заставить ListView вручную воссоздать представление, используя его .Items.Filter? - PullRequest
0 голосов
/ 06 октября 2011

Я получил ListView с коллекцией ItemsSource, где установлено ObservableCollection<string>.И, ListView содержит фильтр в своем свойстве ListView.Items.Filter (как Predicate<bool,object>.

. Итак, допустим, что существуют условия, когда фильтр может изменить свое поведение, не изменяя свою собственную ссылку.

И когда эти условия меняются, мне нужно сообщить ListView, что он должен восстановить свой вид в соответствии с новым фильтром.

Единственное решение, которое я нашел, это

ListView.Items.Filter = ListView.Items.Filter;

, что неверно, но все еще работает. Обновляет каждый элемент с помощью фильтра.

Так есть ли правильное решение для этого?

1 Ответ

1 голос
/ 06 октября 2011

Вам нужно получить представление коллекции (ICollectionView), к которому привязан ListView, и Refresh() его.Мне непонятно, как вы привязали свои данные, но вы можете:

  • явно привязать к представлению коллекции
  • привязать к коллекции и автоматически привязать элемент управленияк представлению коллекции по умолчанию

Похоже, вы сделали последнее, и в этом случае вы можете использовать:

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