2012-08-07 40 views
0

我有一个很长的项目列表,我需要在ListView中显示它们。然后我需要使用计时器自动旋转页面。做什么?如何制作分页的ListView?

+0

是地铁还是WPF?它不能兼而有之。 – mydogisbox 2012-08-07 17:57:45

+0

糟糕。地铁,对不起。 – rikkit 2012-08-08 09:03:22

回答

0

(的Windows 8风格的UI/Metro应用)

您认为:加{结合PagedItems到你的ListView的财产的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是每页上第一项的元素编号。

+0

在发布问题后几秒钟内回答自己的问题?所以不好... – 2012-08-07 16:31:42

+1

其实,回答你自己的问题[鼓励](http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/ )。 – 2012-08-07 20:04:11

+0

@DJ当然,但我怀疑提出一个问题并立即发布答案是一种方法。无论如何,我离题了,问题似乎解决了。 :) – 2012-08-08 12:43:36