为什么更改itemsource后我的listView无法更新?

时间:2019-11-29 21:15:58

标签: c#

我有一个列表视图,该列表视图从HashSet接收信息,但是当我删除HashSet的一项时,我的列表视图不会更新。

我的列表视图没有刷新方法,不知道为什么。这是我的代码:

a = np.arange(15).reshape(3,5)
np.add.at(a,np.ix_([0,0,0,2],[0,0,3,4,4]),1)
a
# array([[ 6,  1,  2,  6, 10],
#        [ 5,  6,  7,  8,  9],
#        [12, 11, 12, 14, 16]])

该项目将以正确的方式删除,因为如果我再次搜索该对象,则会将其从listView中删除,但是我认为应该在刷新ItemsSource时对其进行更新。

1 个答案:

答案 0 :(得分:1)

要确保绑定项目的控件在这些项目更改时发生更改,您必须

  1. 要么使该实现实现INotifyCollectionChanged。最简单的方法是使用ObservableCollection<T>而不是HashSet<T>
    • 尽管您将失去HashSet<T>为您提供的唯一性属性。
  2. 或者在更改集合时以某种方式强制刷新该控件。尽管必须考虑到它不是不是最佳解决方案,因为它经常会导致控件完全重绘,而性能和/或显示出现明显问题 >。
    • 通过调用Refresh方法(WPFWinForms
    • 或通过重新绑定集合
listActivities.ItemsSource = null; 
listActivities.ItemsSource = alumnDelete.activities