功能更新
This commit is contained in:
75
MelskinTest/ViewModel.cs
Normal file
75
MelskinTest/ViewModel.cs
Normal file
@@ -0,0 +1,75 @@
|
||||
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 VibeWPFTest
|
||||
{
|
||||
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)); }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user