Как я могу обновить ListView в WPF - PullRequest
20 голосов
/ 20 декабря 2010

Привет! Я использую WPF и добавляю записи одну за другой в listview.ItemsSource.Мои данные появятся, когда все данные будут включены, но я хочу показать данные по мере их добавления.

Я использовал ListView.Item.Refresh (), но он не работал.

Есть ли способ?

Ответы [ 4 ]

35 голосов
/ 20 декабря 2010

Если вам все еще нужно обновить ListView в любом другом случае (предположим, что вам нужно обновить его ОДИН раз после того, как ВСЕ элементы были добавлены в ItemsSource), вам следует использовать этот подход:

ICollectionView view = CollectionViewSource.GetDefaultView(ItemsSource);
view.Refresh();
18 голосов
/ 20 декабря 2010

Пример:

// Create a collection of Type System.Collections.ObjectModel.ObservableCollection<T>
// Here T can be anything but for this example, we use System.String
ObservableCollection<String> names = new ObservableCollection<String>();

// Assign this collection to ItemsSource property of ListView
ListView1.ItemsSource = names;

// Start adding items to the collection
// They automatically get added to ListView without a need to write any extra code
names.Add("Name 1");
names.Add("Name 2");
names.Add("Name 3");
names.Add("Name 4");
names.Add("Name 5");

// No need to call ListView1.Items.Refresh() when you use ObservableCollection<T>.
6 голосов
/ 20 декабря 2010

Вам необходимо привязать коллекцию, которая реализует INotifyCollectionChanged, например ObservableCollection<T>. Этот интерфейс уведомляет связанный элемент управления всякий раз, когда элемент добавляется или удаляется (поэтому вам вообще не нужно делать никаких вызовов).

Ссылка на INotifyCollectionChanged Интерфейс

Также System.Windows.Controls.ListView не имеет члена с именем Item, убедитесь, что вы не пытаетесь вызвать метод для члена с System.Windows.Forms.ListView. Ссылка: MSDN

0 голосов
/ 14 июня 2011

@ decyclone: ​​

Я работаю в WPF, идея в том, чтобы иметь древовидное представление, в которое мы можем динамически добавлять и удалять элементы - файлы. ObservableCollection был метод для добавления (используя перетаскивание и открытое диалоговое окно для файлов)

ObservableCollection работал нормально для добавления, но удаление элементов отображалось неправильно. Метод обновления не обновлялся. Решением было сбросить (снова) listview.ItemSource на новые значения (список без элементов, которые были удалены).

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