76 lines
2.0 KiB
C#
76 lines
2.0 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Collections.ObjectModel;
|
|
using System.ComponentModel;
|
|
using System.Linq;
|
|
using System.Runtime.CompilerServices;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace MelskinTest
|
|
{
|
|
public class MainViewModel : INotifyPropertyChanged
|
|
{
|
|
private readonly List<string> _fullDataSource; // 模拟的后端数据源
|
|
|
|
private IEnumerable<string> _pagedItems;
|
|
|
|
public IEnumerable<string> PagedItems
|
|
{
|
|
get => _pagedItems;
|
|
private set
|
|
{
|
|
_pagedItems = value;
|
|
OnPropertyChanged();
|
|
}
|
|
}
|
|
|
|
private int _currentPage = 1;
|
|
|
|
public int CurrentPage
|
|
{
|
|
get => _currentPage;
|
|
set
|
|
{
|
|
_currentPage = value;
|
|
OnPropertyChanged();
|
|
UpdatePagedItems();
|
|
}
|
|
}
|
|
|
|
private int _pageSize = 10;
|
|
|
|
public int PageSize
|
|
{
|
|
get => _pageSize;
|
|
set
|
|
{
|
|
_pageSize = value;
|
|
OnPropertyChanged();
|
|
UpdatePagedItems();
|
|
}
|
|
}
|
|
|
|
public long TotalItems { get; private set; }
|
|
|
|
public MainViewModel()
|
|
{
|
|
_fullDataSource = new List<string>(Enumerable.Range(1, 1052).Select(i => $"条目 {i}"));
|
|
TotalItems = _fullDataSource.Count;
|
|
OnPropertyChanged(nameof(TotalItems));
|
|
|
|
UpdatePagedItems(); // 加载第一页
|
|
}
|
|
|
|
private void UpdatePagedItems()
|
|
{
|
|
var skip = (CurrentPage - 1) * PageSize;
|
|
PagedItems = _fullDataSource.Skip(skip).Take(PageSize).ToList();
|
|
}
|
|
|
|
public event PropertyChangedEventHandler PropertyChanged;
|
|
protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
|
|
{ PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); }
|
|
}
|
|
}
|