XAML:

  1. <Grid>
  2. <Grid.RowDefinitions>
  3. <RowDefinition Height="*"/>
  4. <RowDefinition Height="30"/>
  5. </Grid.RowDefinitions>
  6. <ListView Grid.Row="0" ItemsSource="{Binding Lst_bind}">
  7. <ListView.View>
  8. <GridView>
  9. <GridView.Columns>
  10. <GridViewColumn DisplayMemberBinding="{Binding Name}"
  11. Width="200" Header="名字"/>
  12. <GridViewColumn DisplayMemberBinding="{Binding Age}"
  13. Width="200" Header="年龄"/>
  14. <GridViewColumn DisplayMemberBinding="{Binding Address}"
  15. Width="200" Header="地址"/>
  16. </GridView.Columns>
  17. </GridView>
  18. </ListView.View>
  19. </ListView>
  20.  
  21. <StackPanel Orientation="Horizontal" Grid.Row="1">
  22. <ItemsControl ItemsSource="{Binding Pages}">
  23. <ItemsControl.ItemTemplate>
  24. <DataTemplate>
  25. <WrapPanel>
  26. <Button Content="{Binding Name}" Background="Red" Foreground="White"
  27. Width="25" VerticalAlignment="Center" Click="Button_Click_1"/>
  28. </WrapPanel>
  29. </DataTemplate>
  30. </ItemsControl.ItemTemplate>
  31. <!--这里用WrapPanel 当容器放Button-->
    <ItemsControl.ItemsPanel>
  32. <ItemsPanelTemplate>
  33. <WrapPanel Orientation="Horizontal"/>
  34. </ItemsPanelTemplate>
  35. </ItemsControl.ItemsPanel>
  36. </ItemsControl>
  37. <TextBlock VerticalAlignment="Center" Foreground="Black">
  38.  
  39. <TextBlock Text="【共"/>
  40. <TextBlock Text="{Binding Total}" Foreground="Red"/>
  41. <TextBlock Text="页】"/>
  42.  
  43. <TextBlock Text="【当前"/>
  44. <TextBlock Text="{Binding Currentsize}" Foreground="Red"/>
  45. <TextBlock Text="页】"/>
  46.  
  47. </TextBlock>
  48. </StackPanel>
  49. </Grid>

后台代码:
  Models:

  1. public class Pages
  2. {
  3. public string Name { get; set; }
  4. public int PageSize { get; set; }
  5. }
  6.  
  7. public class User
  8. {
  9. public string Name { get; set; }
  10. public int Age { get; set; }
  11. public string Address { get; set; }
  12. }

ViewMode:

  1. class PageDataManager:INotifyPropertyChanged
  2. {
  3. private int number;
  4. public int Number
  5. {
  6. get { return number; }
  7. set
  8. {
  9. number = value;
  10. NotifyPropertyChanged("Number");
  11. }
  12. }
  13.  
  14. private int currentsize;
  15. public int Currentsize
  16. {
  17. get { return currentsize; }
  18. set
  19. {
  20. currentsize = value;
  21. NotifyPropertyChanged("Currentsize");
  22. }
  23. }
  24.  
  25. private int total;
  26. public int Total
  27. {
  28. get { return total; }
  29. set
  30. {
  31. total = value;
  32. NotifyPropertyChanged("Total");
  33. }
  34. }
  35.  
  36. private List<Pages> pages;
  37. public List<Pages> Pages
  38. {
  39. get { return pages; }
  40. set
  41. {
  42. pages = value;
  43. NotifyPropertyChanged("Pages");
  44. }
  45. }
  46.  
  47. private List<User> lst_user;
  48.  
  49. public List<User> Lst_user
  50. {
  51. get { return lst_user; }
  52. set { lst_user = value; NotifyPropertyChanged("Lst_user"); }
  53. }
  54.  
  55. private List<User> lst_bind;
  56.  
  57. public List<User> Lst_bind
  58. {
  59. get { return lst_bind; }
  60. set { lst_bind = value; NotifyPropertyChanged("Lst_bind"); }
  61. }
  62.  
  63. //负责监视属性的变化
  64. public event PropertyChangedEventHandler PropertyChanged;
  65. public void NotifyPropertyChanged(string Propertyname)
  66. {
  67. if (PropertyChanged != null)
  68. {
  69. PropertyChanged(this, new PropertyChangedEventArgs(Propertyname));
  70. }
  71. }
  72.  
  73. public PageDataManager()
  74. {
  75. this.Number = ;
  76.  
  77. this.Lst_user = new List<User>();
  78. for (int i = ; i <= ; i++)
  79. {
  80. Lst_user.Add(new User() { Name="张三"+i.ToString(), Age=, Address="中国河南" });
  81. }
  82.  
  83. //总页数=总数/每页显示的数
  84. this.Total = Lst_user.Count()/Number;
  85.  
  86. //初始化页数数组
  87. this.Pages = new List<Pages>();
  88. for (int i = ; i <= Total; i++)
  89. {
  90. this.Pages.Add(new Pages() { Name=i.ToString(), PageSize=i});
  91. }
  92. this.Currentsize = ;
  93. Pager(Currentsize);
  94. }
  95.  
  96. //分页方法
  97. public void Pager(int cize)
  98. {
  99. this.Currentsize = cize;
  100. this.Lst_bind = this.Lst_user.Take(this.Number * cize).Skip(this.Number * (cize - )).ToList();
  101. }
  102. }

MainPage.cs

  1. public partial class MainWindow : Window
  2. {
  3. PageDataManager data = new PageDataManager();
  4. public MainWindow()
  5. {
  6.  
  7. InitializeComponent();
  8. this.DataContext = data;
  9. }
  10.  
  11. private void Button_Click_1(object sender, RoutedEventArgs e)
  12. {
  13. data.Pager(((sender as Button).DataContext as Pages).PageSize);
  14. }
  15. }

【WPF】ListView自定义分页的更多相关文章

  1. WPF管理系统自定义分页控件 - WPF特工队内部资料

    最近做一个演示的管理系统项目,需要用到分页控件,在网上找了很多,依然找到与UI模版匹配的,最后干脆自己写一个. 分页控件分析: 1.分页控件分简单显示和复杂显示两种: 2.包含上一页.下一页以及页码明 ...

  2. WPF自定义控件与样式(7)-列表控件DataGrid与ListView自定义样式

    一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. 本文主要内容: Dat ...

  3. 【转】WPF自定义控件与样式(7)-列表控件DataGrid与ListView自定义样式

    一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等. 本文主要内容: DataGrid自定义样式: ListView自定义样式: 二.Dat ...

  4. WPF自定义分页控件,样式自定义,简单易用

    WPF自定义分页控件 做了许久伸手党,终于有机会贡献一波,搜索一下WPF分页控件,还是多,但是不太通用,主要就是样式问题,这个WPF很好解决,还有一个就是分页控件嘛,只关心几个数字的变动就行了,把页码 ...

  5. Android中使用ListView实现分页刷新(线程休眠模拟)

    当要显示的数据过多时,为了更好的提升用户感知,在很多APP中都会使用分页刷新显示,比如浏览新闻,向下滑动到当前ListView的最后一条信息(item)时,会提示刷新加载,然后加载更新后的内容.此过程 ...

  6. Android中使用ListView实现分页刷新(线程休眠模拟)(滑动加载列表)

    当要显示的数据过多时,为了更好的提升用户感知,在很多APP中都会使用分页刷新显示,比如浏览新闻,向下滑动到当前ListView的最后一条信息(item)时,会提示刷新加载,然后加载更新后的内容.此过程 ...

  7. Android基本控件之listView(三)<用ListView实现分页加载>

    我们之前讨论了ListView的基本使用方法和ListView的优化 今天我们再来讨论一个关于ListView的一个新的东西~就是分页加载.那么什么是分页加载呢?简单点说,就是"下拉刷新&q ...

  8. [WPF]ListView点击列头排序功能实现

    [转]   [WPF]ListView点击列头排序功能实现 这是一个非常常见的功能,要求也很简单,在Column Header上显示一个小三角表示表示现在是在哪个Header上的正序还是倒序就可以了. ...

  9. ListView实现分页加载(一)制作Demo

    一.什么是分页加载 在下面的文章中,我们来讲解LitView分页加载的实现.什么是分页加载呢?我们先看几张效果图吧,如下:                                       ...

随机推荐

  1. git clone 无权限

    错误提示: remote: Coding.net Tips : [You have no permission to access this repo.] fatal: unable to acces ...

  2. 使用EA软件画数据库图表

    使用EA软件可以画出数据库的图表并生成SQL语句,非常方便,下面介绍一下步骤 1.先创建一个默认的工程 2.新建一个视图 3.在视图中添加一个图表 4.使用图表工具箱画表 没有出现toolbox的话, ...

  3. git相关网址

    git入门教程: 廖雪峰的官方网站 https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b00 ...

  4. 洛谷 2186 小Z的栈函数

    https://www.luogu.org/problem/show?pid=2186 题目描述 小Z最近发现了一个神奇的机器,这个机器的所有操作都是通过维护一个栈来完成的,它支持如下11个操作: N ...

  5. macbook 安装任意来源

    sudo spctl --master-disable Comand+r Csrutil disable Reboot

  6. 【CodeForces】585 E. Present for Vitalik the Philatelist

    [题目]E. Present for Vitalik the Philatelist [题意]给定n个数字,定义一种合法方案为选择一个数字Aa,选择另外一些数字Abi,令g=gcd(Ab1...Abx ...

  7. cocos2dx学习,转摘一些链接

    cocos2d-x学习笔记09:动作2:持续动作 ccBezierConfig 贝塞尔坐标点是相对的 Box2DTestBed很有意思的demo,可惜自己水平有限针对其实现还是没弄明白,以后有时间多学 ...

  8. python3爬虫.4.下载煎蛋网妹子图

    开始我学习爬虫的目标 ----> 煎蛋网 通过设置User-Agent获取网页,发现本该是图片链接的地方被一个js函数代替了 于是全局搜索到该函数 function jandan_load_im ...

  9. 线程句柄和线程ID的区别

    ●CreateThread() API 用于创建线程. API 返回同时线程句柄,并通过参数得到线程标识符 (ID). 线程句柄有完全访问权创建线程对象. 运行线程时线程 ID 唯一标识线程在系统级别 ...

  10. hdu 1498 50 years, 50 colors(二分匹配_匈牙利算法)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1498 50 years, 50 colors Time Limit: 2000/1000 MS (Ja ...