我如何在WPF中刷新ListView

时间:2010-12-20 09:44:25

标签: wpf listview

您好我正在使用WPF并逐个添加记录到listview.ItemsSource。当包含所有数据时,我的数据会出现,但我想逐个显示数据。

我使用了ListView.Item.Refresh()但它没有用。

有什么办法吗?

...谢谢

5 个答案:

答案 0 :(得分:35)

如果您仍然需要在任何其他情况下刷新ListView(假设您需要在将所有元素添加到ItemsSource后将其更新一次),那么您应该使用此方法:

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

答案 1 :(得分:18)

实施例

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

答案 2 :(得分:6)

您需要绑定到实现INotifyCollectionChanged的集合,例如ObservableCollection<T>。每当添加或删除项目时,此接口都会通知绑定控件(因此您根本不需要进行任何调用)。

链接到INotifyCollectionChanged Interface

同样System.Windows.Controls.ListView没有名为Item的成员,请确保您没有尝试从System.Windows.Forms.ListView成员调用某个成员的方法。 Referance:MSDN

答案 3 :(得分:1)

@decyclone:

我在WPF工作的想法是有一个树视图,我们可以动态添加和删除元素 - 文件。 ObservableCollection是添加的方法(使用拖放和文件的打开对话框)

ObservableCollection适用于添加,但项目删除未正确显示。刷新方法没有“刷新”。解决方案是(再次)将listview.ItemSource重置为新值(没有删除元素的列表)。

感谢您的回答,因为它帮助了我。

答案 4 :(得分:1)

    ObservableCollection<int> items = new ObservableCollection<int>();
    lvUsers.ItemsSource = items;

    for (int i = 0; i < 100; i++)
    {
        items.Add(i);
    }            

无需刷新