【问题标题】:A more elegant ListView requery更优雅的 ListView 重新查询
【发布时间】:2010-11-27 06:02:52
【问题描述】:

每次触发另一个控件的IsChanged 事件时,我都需要刷新我的ListView。我用谷歌搜索了如何做到这一点,我看到了一个指向我的 stackoverflow 链接here

其中一个答案有效:

listView.ItemsSource = listView.ItemsSource    

这真的是刷新我的ListView 的唯一方法吗?感觉有点不对劲。

【问题讨论】:

  • 哎呀,这真是过时了。该声明应该是一个noop。如果不是,有人可能会认为它是并删除它。危险。

标签: wpf listview refresh


【解决方案1】:

只是让它无效。

listView.InvalidateProperty(ListView.ItemsSourceProperty)

应该这样做。

顺便说一句,我真的建议看看 MVVM。它往往更强大。在这种情况下,对于 MVVM 应用程序,我会这样做:

Xaml:

<ListView ItemsSource="{Binding MyItems}" />

这将是我绑定到的 ViewModel:

public ObservableCollection<MyItem> MyItems
{
     get; set;
}

public void IsChangedHandler(...)
{
     ...
     this.OnPropertyChanged("MyItems");
}

【讨论】:

    【解决方案2】:

    每次刷新列表视图需要什么。它肯定会减慢您的应用程序的性能。

    最好使用 ObervableCollection 作为列表视图的 ItemSource。

    你可以找到一个线程安全的可观察集合here

    在 MSDN 论坛中也可以看到这个问题 - ListView.ItemsSource: howto update the UI whenever the source is updated?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-24
      • 2016-10-09
      • 1970-01-01
      • 2016-10-06
      • 2021-07-10
      • 2015-11-08
      • 2022-01-24
      • 2011-06-09
      相关资源
      最近更新 更多