【问题标题】:How I Can Refresh ListView in WPF如何在 WPF 中刷新 ListView
【发布时间】:2010-12-20 09:44:24
【问题描述】:

您好,我正在使用 WPF 并将记录一一添加到 listview.ItemsSource。我的数据会在所有数据都包含在内的情况下出现,但是我想把数据显示出来,因为它是一个一个添加的。

我使用了 ListView.Item.Refresh() 但它不起作用。

有什么办法吗?

【问题讨论】:

  • 我不太确定我是否理解您的问题。您是否希望您的项目一个接一个地出现在列表视图中?添加项目非常快,因此您很可能根本不会注意到。

标签: wpf listview


【解决方案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&lt;T&gt;。每当添加或删除项目时,此接口都会通知绑定的控件(因此您根本不必进行任何调用)。

      链接到INotifyCollectionChanged Interface

      另外,System.Windows.Controls.ListView 没有名为 Item 的成员,请确保您没有尝试调用来自 System.Windows.Forms.ListView 的成员的方法。 参考:MSDN

      【讨论】:

        【解决方案4】:

        @decyclone:

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

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

        【讨论】:

          【解决方案5】:
              ObservableCollection<int> items = new ObservableCollection<int>();
              lvUsers.ItemsSource = items;
          
              for (int i = 0; i < 100; i++)
              {
                  items.Add(i);
              }            
          

          无需刷新

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-03-31
            • 1970-01-01
            • 2021-05-04
            • 1970-01-01
            • 1970-01-01
            • 2010-11-22
            • 1970-01-01
            • 2019-04-16
            相关资源
            最近更新 更多