Как я могу обновить ListView в WPF
Привет я использую WPF и добавляю записи одну за другой в listview.ItemsSource. Мои данные появятся, когда будут включены все данные, но я хочу показать данные по мере их добавления.
Я использовал ListView.Item.Refresh(), но он не работал.
Там в любом случае?
Ответы
Ответ 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