Эта возможность не доступна напрямую в базовом классе ObservableCollecton. Вы можете расширить ObservableCollection и создать собственную коллекцию, которая делает это. Вам необходимо скрыть исходную коллекцию внутри этого нового класса и на основе FromIndex и ToIndex динамически добавлять диапазон элементов в класс. Переопределите InsertItem и RemoveItem. Я даю не проверенную версию ниже. Но, пожалуйста, примите это как псевдокод.
//This class represents a single Page collection, but have the entire items available in the originalCollection
public class PaginatedObservableCollection : ObservableCollection<object>
{
private ObservableCollection<object> originalCollection;
public int CurrentPage { get; set; }
public int CountPerPage { get; set; }
protected override void InsertItem(int index, object item)
{
//Check if the Index is with in the current Page then add to the collection as bellow. And add to the originalCollection also
base.InsertItem(index, item);
}
protected override void RemoveItem(int index)
{
//Check if the Index is with in the current Page range then remove from the collection as bellow. And remove from the originalCollection also
base.RemoveItem(index);
}
}
ОБНОВЛЕНИЕ: у меня есть запись в блоге на эту тему здесь - http://jobijoy.blogspot.com/2008/12/paginated-observablecollection.html, и исходный код загружен в Codeplex .