我正在使用这里提供的示例StackOverflow相关问题,如果在网格中有偶数个项目,则一切正常,但是如果例如我有7个项目,则会抛出一个超出范围的异常,我通过添加以下行来解决此问题。
public override object GetItemAt(int index)
{
var offset = ((index % (this._itemsPerPage)) + this.StartIndex) > this._innerList.Count - 1 ? 0 : index % (this._itemsPerPage);
return this._innerList[this.StartIndex + offset];
}
问题在于,如果您将每页项目设置为2,则会有4个页面,前3个页面看起来正确,但最后一页会重复最后一个项目。如下所示:
![enter image description here](https://istack.dev59.com/3D72I.webp)
public override object GetItemAt(int index)
方法从单独维护的_internalList
中获取项目。基类已经正确排序了项目(您可以在调试期间看到),但是PagingCollectionView
没有使用这些项目。不幸的是,基类的内部列表没有受到保护,因此无法编写一个合适的子类。我觉得很奇怪,WPF没有直接支持这个功能。 - Robert F.