我有一长串项目,我需要在 ListView 中显示它们。然后我需要页面使用计时器自动旋转。做什么?
问问题
127 次
1 回答
0
(Windows 8 风格的 UI/Metro 应用程序)
在您的视图中:将 {Binding 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
每页上第一项的元素编号。
于 2012-08-07T16:27:40.407 回答