Подтвердить что ты не робот

Как я могу обновить ListView в WPF

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

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

Там в любом случае?

4b9b3361

Ответ 1

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

ICollectionView view = CollectionViewSource.GetDefaultView(ItemsSource);
view.Refresh();

Ответ 2

Пример:

// 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>.

Ответ 3

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

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

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

Ответ 4

@decyclone:

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

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

Ответ 5

ICollectionView view = CollectionViewSource.GetDefaultView(ItemsSource);
view.Refresh();

Он действительно работает, чтобы обновить ListView.

-Shailesh Bhute