ListView 不刷新其项目

Posted

技术标签:

【中文标题】ListView 不刷新其项目【英文标题】:ListView does not refresh its items 【发布时间】:2012-09-21 04:13:27 【问题描述】:

我有一个ListView,其中:

public class RowData

    public string Box1  get; set; 
    public string Box2  get; set; 
    public string Box3  get; set; 
;

private ObservableCollection<RowData> Data = new ObservableCollection<RowData>();

...

MyListView.ItemsSource = Data;

我将RowData 的属性与我的列的DisplayMemberBinding 属性绑定,例如:

MyGridViewColumn.DisplayMemberBinding = new Binding("Box1"));

我处理ListViewItem.DoubleClick 事件:

private void ListViewItem_DoubleClick(object sender, MouseButtonEventArgs e)

    ListViewItem item = sender as ListViewItem;
    RowData data = item.DataContext as RowData;
    data.Box1 = "new string";

但是当我将新字符串分配给我的数据时,ListView 不会刷新它的项目(我仍然可以看到 Box1 的旧值,即使 Box1 有一个新值 - 新的双击显示 @ 987654331@ 在分配新字符串之前)。 为什么?我该如何解决这个问题?

【问题讨论】:

这篇文章可能对您有所帮助。 ***.com/questions/4680653/… 【参考方案1】:

你忘了实现INotifyPropertyChangedinterface

更新数据类中的任何属性后,您需要通知 View 自行更新。

public class RowData : INotifyPropertyChanged

    private string box1;
    public string Box1 
    
        get  return box1; 
        set
        
            if(box1 == value) return;
            box1= value;
            NotifyPropertyChanged("Box1 ");
        
    
 //repete the same to Box2 and Box3

 public event PropertyChangedEventHandler PropertyChanged;

 private void NotifyPropertyChanged(String propertyName)
 
     if (PropertyChanged != null)
     
         PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
     
 
 

【讨论】:

以上是关于ListView 不刷新其项目的主要内容,如果未能解决你的问题,请参考以下文章

Android:重新绑定 ListView 或 RecyclerView 而不刷新 Header

获取 ListView 可见项

android ListView刷新焦点问题

OnTap 后刷新 Flutter ListView

ListView 仅在刷新后显示项目

Flutter 中刷新 ListView