问题:我在写一个listView的时候,加了序号一列,序号通过转换器实现,就是网上搜索的代码,但是有一个很奇怪的现象,删除列表的一向时,为触发序号的修改,只是这一列消失了,新增一项时,则可以触发。导致的结果如下图所示:移除之后再新增一行,会导致序号重复问题。
解决方案:原因是序号通过转换器实现,转换器的触发方式是传入值更新,删除一个值则不会更新,所以我的思路是删除的时候刷新一下列表,让他重新加载一次。代码如下,应该也可以用refresh,但是这个List没有,所以我就在删除行的时候手动刷了一下。代码如下:
/// <summary>
/// 刷新一下ScanBookList
/// </summary>
private void ReFreshBookList()
{
var tempBookList = new ObservableCollection<BookItemViewModel>();
foreach (var item in ScanBookList)
{
tempBookList.Add(item);
}
ScanBookList.Clear();
foreach (var item in tempBookList)
{
ScanBookList.Add(item);
}
tempBookList = null;//清空一下
}
后续再度的发型记录:如果绑定的属性不存在,也不会触发转换器(并不是传入空的触发方式)