您好我正在使用WPF并逐个添加记录到listview.ItemsSource。当包含所有数据时,我的数据会出现,但我想逐个显示数据。
我使用了ListView.Item.Refresh()但它没有用。
有什么办法吗?
...谢谢
答案 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);
}
无需刷新