繁体   English   中英

为什么更改 itemsource 后我的 listView 没有更新?

[英]Why is my listView not updating after changing itemsource?

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

而且我的listview没有刷新的方法,不知道为什么。 这是我的代码:

private void deleteActivityFromAlumn(String activityName, String nif)
{
    Alumn alumnDelete = Alumn.findAlumnByNIF(nif);
    Activity activityDelete = Activity.getActivityByName(activityName);
    Debug.WriteLine(alumnDelete.Name + activityDelete.Name);
    alumnDelete.activities.Remove(activityDelete);
    activityDelete.Alumns.Remove(alumnDelete);
    listActivities.ItemsSource = alumnDelete.activities;
}

并且该项目以正确的方式被删除,因为如果我再次搜索该对象,它将从 listView 中删除,但我相信它应该在您刷新 ItemsSource 时更新。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM