以下是一个简单的WPF ViewModel分页代码示例:

// 定义一个基本的分页ViewModel类
public class PagingViewModel<T> : INotifyPropertyChanged where T : class
{
    private readonly ObservableCollection<T> _sourceList;
    private readonly int _pageSize;
    private int _pageIndex;
    private ObservableCollection<T> _pagedList;

    public PagingViewModel(ObservableCollection<T> sourceList, int pageSize)
    {
        _sourceList = sourceList;
        _pageSize = pageSize;
        _pageIndex = 0;
        UpdatePagedList();
    }

    public ObservableCollection<T> PagedList
    {
        get { return _pagedList; }
        set { _pagedList = value; OnPropertyChanged(); }
    }

    public int PageIndex
    {
        get { return _pageIndex; }
        set
        {
            _pageIndex = value;
            UpdatePagedList();
        }
    }

    public int PageCount
    {
        get { return (int)Math.Ceiling((double)_sourceList.Count / _pageSize); }
    }

    private void UpdatePagedList()
    {
        int startIndex = _pageIndex * _pageSize;
        int count = Math.Min(_pageSize, _sourceList.Count - startIndex);
        PagedList = new ObservableCollection<T>(_sourceList.Skip(startIndex).Take(count));
    }

    #region INotifyPropertyChanged

    public event PropertyChangedEventHandler PropertyChanged;

    protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }

    #endregion
}

使用方法:

// 创建一个ObservableCollection作为数据源
var items = new ObservableCollection<string>();
items.Add("Item 1");
items.Add("Item 2");
items.Add("Item 3");
items.Add("Item 4");
items.Add("Item 5");

// 创建一个PagingViewModel实例
var pagingViewModel = new PagingViewModel<string>(items, 2);

// 绑定PagedList和PageIndex到UI
ListBox.ItemsSource = pagingViewModel.PagedList;
TextBoxPageIndex.DataContext = pagingViewModel;
TextBoxPageIndex.SetBinding(TextBox.TextProperty, new Binding("PageIndex") { Mode = BindingMode.TwoWay });

这个示例使用ObservableCollection作为数据源,每页显示2个项。可以使用PageIndex属性来切换页面,并在UI中绑定。

WPF ViewModels分页代码

原文地址: https://www.cveoy.top/t/topic/bq2l 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录