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. discuz开发,登录次数过多,锁定解决方法

    到数据库里的表找到pre_common_failedlogin 和pre_ucenter_failedlogins清空里面的内容即可. truncate table pre_common_failed ...

  2. 数据分析与展示---anaconda的使用

    一:安装 官方源:https://repo.continuum.io/archive/(太慢) 清华源:https://mirrors.tuna.tsinghua.edu.cn/anaconda/ar ...

  3. rabbitmq常见运维命令和问题总结

    常见运维命令作用: yum安装erlang的环境配置: ERLANG_HOME=/usr/lib64/erlang export PATH=$PATH:$ERLANG_HOME/bin 常见rabbi ...

  4. ZOJ 3787 Access System 水

    LINK:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3787 思路:结构体 时间转化为秒记录下最小并且排序就好了 /** ...

  5. 用英文写Email的注意事项

  6. (64位)本体学习程序(ontoEnrich)系统配置说明文档

    1系统环境 64位 Ubuntu 2 第三方依赖库配置 boost_1_44_0 #解压boost_1_44_0.tar.gz 到 /usr/local.如果出现权限问题,请用sudo执行该命令 ta ...

  7. Web 开发者不可不知的15条编码原则

    HTML 已经走过了近20的发展历程.从HTML4到XHTML,再到最近十分火热的HTML5,它几乎见证了整个互联网的发展.但是,即便到现在,有很多基础的概念和原则依然需要开发者高度注意.下面,向大家 ...

  8. 为什么 .NET 会被叫做 .NET?

    微软开发.NET Framework是在20世纪90年代后期,最初是叫做“下一代Windows服务”(Next Generation Windows Services 简称 NGWS). 那么为什么微 ...

  9. 【BZOJ4237】稻草人 [分治][单调栈]

    稻草人 Time Limit: 40 Sec  Memory Limit: 256 MB[Submit][Status][Discuss] Description JOI村有一片荒地,上面竖着N个稻草 ...

  10. 【BZOJ】2049: [Sdoi2008]Cave 洞穴勘测 LCT

    [题意]给定n个点和m个操作,每次操作:1.连接2个点.2.断开2个点.3.查询2个点是否连通.m<=2*10^5. [算法]Link-Cut Tree [题解]LCT模板题,Link,Cut, ...