gpt4 book ai didi

c# - ListView 不刷新其项目

转载 作者:行者123 更新时间:2023-11-30 22:24:42 24 4
gpt4 key购买 nike

我有一个 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 属性绑定(bind)在一起,例如:

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 有一个新值 - 新的双击显示 Box1 == "new string" 在分配新字符串之前)。
为什么?我该如何解决这个问题?

最佳答案

您忘记实现 INotifyPropertyChanged interface

更新数据类中的任何属性后,您需要通知 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));
}
}
}

关于c# - ListView 不刷新其项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12654196/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com