Files
ShrlAlgoToolkit/MelskinTest/ViewModel.cs
2026-02-17 22:17:23 +08:00

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)); }
}
}