簡體   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