82 lines
2.0 KiB
C#
82 lines
2.0 KiB
C#
using Prism.Commands;
|
|
using Prism.Mvvm;
|
|
using Prism.Regions;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows;
|
|
|
|
namespace DM_Weight.Components.pagination
|
|
{
|
|
public class PaginationViewModel: BindableBase, IRegionMemberLifetime
|
|
{
|
|
public static readonly DependencyProperty PageSizeProperty = DependencyProperty
|
|
.Register("CurrentPage",
|
|
typeof(int),
|
|
typeof(Pagination),
|
|
new FrameworkPropertyMetadata(10));
|
|
|
|
// 每页条数
|
|
private int _pageSize = 10;
|
|
// 当前页码
|
|
private int _currentPage = 1;
|
|
// 总条数
|
|
private int _totalPages = 0;
|
|
|
|
public int PageSize { get=> _pageSize; set => SetProperty(ref _pageSize, value); }
|
|
public int CurrentPage { get => _currentPage; set => SetProperty(ref _currentPage, value); }
|
|
public int TotalPages { get => _totalPages; set => SetProperty(ref _totalPages, value); }
|
|
// 总页数
|
|
public int PageCount
|
|
{
|
|
get => (int)Math.Ceiling((double)TotalPages/ PageSize);
|
|
}
|
|
|
|
public string InfoText
|
|
{
|
|
get => ((CurrentPage - 1) * PageSize + 1) + "-" + (CurrentPage * PageSize > TotalPages ? TotalPages : CurrentPage * PageSize) + "/" + TotalPages;
|
|
}
|
|
|
|
public bool KeepAlive => false;
|
|
|
|
|
|
public DelegateCommand ToFirst
|
|
{
|
|
get => new(() =>
|
|
{
|
|
CurrentPage = 1;
|
|
});
|
|
}
|
|
|
|
|
|
|
|
public DelegateCommand ToPrve
|
|
{
|
|
get => new(() =>
|
|
{
|
|
CurrentPage -= 1;
|
|
});
|
|
}
|
|
|
|
public DelegateCommand ToNext
|
|
{
|
|
get => new(() =>
|
|
{
|
|
CurrentPage += 1;
|
|
});
|
|
}
|
|
|
|
public DelegateCommand ToEnd
|
|
{
|
|
get => new(() =>
|
|
{
|
|
CurrentPage = PageCount;
|
|
});
|
|
}
|
|
|
|
|
|
}
|
|
}
|