0

アイテムのリストが長いので、それらをListViewに表示する必要があります。次に、タイマーを使用してページを自動的に回転させる必要があります。何をしますか?

4

1 に答える 1

0

(Windows8スタイルのUI/ Metroアプリ)

ビューで:{BindingPagedItems}をListViewのItemSourceプロパティに追加します。

ViewModelの場合:

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 に答える