c# ObjectListView - 更改值后不更新排序
c# ObjectListView - Not updating sorting after a vlue is changed
我正在使用 ObjectListView 来显示字典值,它工作完美,但是当我对它进行排序时,我的意思是当我按年龄降序排序时,它像 {30, 27, 26, 15, 10}
这是我的对象的一个例子class
public class Item: INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyName)
{
if (this.PropertyChanged != null)
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
int age = -1;
public Int32 Age
{
get{return age;}
set
{
if (value == age)
return;
this.age = value;
OnPropertyChanged("Age");
}
}
}
这也是我如何将对象列表附加到列表视图
System.Diagnostics.Stopwatch stopWatch = new System.Diagnostics.Stopwatch();
try
{
this.Cursor = System.Windows.Forms.Cursors.WaitCursor;
stopWatch.Start();
this.listview1.SetObjects(this.ItemsDictionary.Values);
}
finally
{
stopWatch.Stop();
this.Cursor = System.Windows.Forms.Cursors.Default;
}
我用过
this.listview1.Update();
但我知道这是更新控件的绘制而不是排序。
如果 15 岁的对象被更新(增加或减少),排序不会更新,它仍然在相同的位置,我需要做些什么来让它在排序列的任何值时自动排序更新变了吗?
使用这个:
listView.SetObjects(iEnumerable)
我通过对我更新的每个项目使用此代码解决了这个问题
this.listview1.Sort(this.listview1.LastSortColumn);
this.listview1.UpdateObject(OBJ);
也许这对其他人有帮助。
我正在使用 ObjectListView 来显示字典值,它工作完美,但是当我对它进行排序时,我的意思是当我按年龄降序排序时,它像 {30, 27, 26, 15, 10}
这是我的对象的一个例子class
public class Item: INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyName)
{
if (this.PropertyChanged != null)
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
int age = -1;
public Int32 Age
{
get{return age;}
set
{
if (value == age)
return;
this.age = value;
OnPropertyChanged("Age");
}
}
}
这也是我如何将对象列表附加到列表视图
System.Diagnostics.Stopwatch stopWatch = new System.Diagnostics.Stopwatch();
try
{
this.Cursor = System.Windows.Forms.Cursors.WaitCursor;
stopWatch.Start();
this.listview1.SetObjects(this.ItemsDictionary.Values);
}
finally
{
stopWatch.Stop();
this.Cursor = System.Windows.Forms.Cursors.Default;
}
我用过
this.listview1.Update();
但我知道这是更新控件的绘制而不是排序。
如果 15 岁的对象被更新(增加或减少),排序不会更新,它仍然在相同的位置,我需要做些什么来让它在排序列的任何值时自动排序更新变了吗?
使用这个:
listView.SetObjects(iEnumerable)
我通过对我更新的每个项目使用此代码解决了这个问题
this.listview1.Sort(this.listview1.LastSortColumn);
this.listview1.UpdateObject(OBJ);
也许这对其他人有帮助。