如何制作分页列表视图

本文关键字:视图 列表 分页 何制作 | 更新日期: 2024-11-06 17:55:52

我有一个很长的项目列表,我需要在列表视图中显示它们。然后,我需要使用计时器自动旋转页面。怎么办?

如何制作分页列表视图

(Windows 8 样式的 UI/Metro 应用程序)

在视图中:将 {绑定分页项} 添加到列表视图的 ItemSource 属性。

在您的视图模型中:

public class ViewModel : INotifyPropertyChanged {
    public ObservableCollection<Item> PagedItems {get;set;}
    private DispatcherTimer _timer;
    private ObservableCollection<Item> _itemsToPage;
    private int _itemsPerPage;
    private int _currentPage;
    public ViewModel() {
        _itemsToPage = new ObservableCollection<Item>(); // replace this with whatever your items are
        _timer = new DispatcherTimer {Interval = new TimeSpan(0,0,0,10)};
        _timer.Tick += NextPage;
        _timer.Start();
    }
    private void NextPage(object sender, object e) {
        if (_itemsToPage < _itemsPerPage) return;
        if (_currentPage * _itemsPerPage >= _itemsToPage) _currentPage = 1;
        else _currentPage++;
        // the key line
        PagedItems = new ObservableCollection<Item>(
            _itemsToPage.Skip((_currentPage-1) * _itemsPerPage)
                .Take(_itemsPerPage));
        OnPropertyChanged("PagedItems") // you need to implement INotifyPropertyChanged
    }
}

基本思想:每隔x秒创建一个基于要分页的列表中的项目子集的新列表。您会注意到每页上第一项的元素编号(_currentPage-1) * _itemsPerPage