2012-08-07 71 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