【WPF】ListView自定义分页
XAML:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="30"/>
</Grid.RowDefinitions>
<ListView Grid.Row="0" ItemsSource="{Binding Lst_bind}">
<ListView.View>
<GridView>
<GridView.Columns>
<GridViewColumn DisplayMemberBinding="{Binding Name}"
Width="200" Header="名字"/>
<GridViewColumn DisplayMemberBinding="{Binding Age}"
Width="200" Header="年龄"/>
<GridViewColumn DisplayMemberBinding="{Binding Address}"
Width="200" Header="地址"/>
</GridView.Columns>
</GridView>
</ListView.View>
</ListView> <StackPanel Orientation="Horizontal" Grid.Row="1">
<ItemsControl ItemsSource="{Binding Pages}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<WrapPanel>
<Button Content="{Binding Name}" Background="Red" Foreground="White"
Width="25" VerticalAlignment="Center" Click="Button_Click_1"/>
</WrapPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
<!--这里用WrapPanel 当容器放Button-->
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
<TextBlock VerticalAlignment="Center" Foreground="Black"> <TextBlock Text="【共"/>
<TextBlock Text="{Binding Total}" Foreground="Red"/>
<TextBlock Text="页】"/> <TextBlock Text="【当前"/>
<TextBlock Text="{Binding Currentsize}" Foreground="Red"/>
<TextBlock Text="页】"/> </TextBlock>
</StackPanel>
</Grid>
后台代码:
Models:
public class Pages
{
public string Name { get; set; }
public int PageSize { get; set; }
} public class User
{
public string Name { get; set; }
public int Age { get; set; }
public string Address { get; set; }
}
ViewMode:
class PageDataManager:INotifyPropertyChanged
{
private int number;
public int Number
{
get { return number; }
set
{
number = value;
NotifyPropertyChanged("Number");
}
} private int currentsize;
public int Currentsize
{
get { return currentsize; }
set
{
currentsize = value;
NotifyPropertyChanged("Currentsize");
}
} private int total;
public int Total
{
get { return total; }
set
{
total = value;
NotifyPropertyChanged("Total");
}
} private List<Pages> pages;
public List<Pages> Pages
{
get { return pages; }
set
{
pages = value;
NotifyPropertyChanged("Pages");
}
} private List<User> lst_user; public List<User> Lst_user
{
get { return lst_user; }
set { lst_user = value; NotifyPropertyChanged("Lst_user"); }
} private List<User> lst_bind; public List<User> Lst_bind
{
get { return lst_bind; }
set { lst_bind = value; NotifyPropertyChanged("Lst_bind"); }
} //负责监视属性的变化
public event PropertyChangedEventHandler PropertyChanged;
public void NotifyPropertyChanged(string Propertyname)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(Propertyname));
}
} public PageDataManager()
{
this.Number = ; this.Lst_user = new List<User>();
for (int i = ; i <= ; i++)
{
Lst_user.Add(new User() { Name="张三"+i.ToString(), Age=, Address="中国河南" });
} //总页数=总数/每页显示的数
this.Total = Lst_user.Count()/Number; //初始化页数数组
this.Pages = new List<Pages>();
for (int i = ; i <= Total; i++)
{
this.Pages.Add(new Pages() { Name=i.ToString(), PageSize=i});
}
this.Currentsize = ;
Pager(Currentsize);
} //分页方法
public void Pager(int cize)
{
this.Currentsize = cize;
this.Lst_bind = this.Lst_user.Take(this.Number * cize).Skip(this.Number * (cize - )).ToList();
}
}
MainPage.cs
public partial class MainWindow : Window
{
PageDataManager data = new PageDataManager();
public MainWindow()
{ InitializeComponent();
this.DataContext = data;
} private void Button_Click_1(object sender, RoutedEventArgs e)
{
data.Pager(((sender as Button).DataContext as Pages).PageSize);
}
}
【WPF】ListView自定义分页的更多相关文章
- WPF管理系统自定义分页控件 - WPF特工队内部资料
最近做一个演示的管理系统项目,需要用到分页控件,在网上找了很多,依然找到与UI模版匹配的,最后干脆自己写一个. 分页控件分析: 1.分页控件分简单显示和复杂显示两种: 2.包含上一页.下一页以及页码明 ...
- WPF自定义控件与样式(7)-列表控件DataGrid与ListView自定义样式
一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. 本文主要内容: Dat ...
- 【转】WPF自定义控件与样式(7)-列表控件DataGrid与ListView自定义样式
一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等. 本文主要内容: DataGrid自定义样式: ListView自定义样式: 二.Dat ...
- WPF自定义分页控件,样式自定义,简单易用
WPF自定义分页控件 做了许久伸手党,终于有机会贡献一波,搜索一下WPF分页控件,还是多,但是不太通用,主要就是样式问题,这个WPF很好解决,还有一个就是分页控件嘛,只关心几个数字的变动就行了,把页码 ...
- Android中使用ListView实现分页刷新(线程休眠模拟)
当要显示的数据过多时,为了更好的提升用户感知,在很多APP中都会使用分页刷新显示,比如浏览新闻,向下滑动到当前ListView的最后一条信息(item)时,会提示刷新加载,然后加载更新后的内容.此过程 ...
- Android中使用ListView实现分页刷新(线程休眠模拟)(滑动加载列表)
当要显示的数据过多时,为了更好的提升用户感知,在很多APP中都会使用分页刷新显示,比如浏览新闻,向下滑动到当前ListView的最后一条信息(item)时,会提示刷新加载,然后加载更新后的内容.此过程 ...
- Android基本控件之listView(三)<用ListView实现分页加载>
我们之前讨论了ListView的基本使用方法和ListView的优化 今天我们再来讨论一个关于ListView的一个新的东西~就是分页加载.那么什么是分页加载呢?简单点说,就是"下拉刷新&q ...
- [WPF]ListView点击列头排序功能实现
[转] [WPF]ListView点击列头排序功能实现 这是一个非常常见的功能,要求也很简单,在Column Header上显示一个小三角表示表示现在是在哪个Header上的正序还是倒序就可以了. ...
- ListView实现分页加载(一)制作Demo
一.什么是分页加载 在下面的文章中,我们来讲解LitView分页加载的实现.什么是分页加载呢?我们先看几张效果图吧,如下: ...
随机推荐
- echo 不换行
原文 http://blog.sina.com.cn/s/blog_4da051a6010184uk.html echo -n 不换行输出 $echo -n "123" $ec ...
- centos pure-ftpd配置及错误解决
使用yum安装pure-ftpd Pure-FTPd是Linux上的一个开源的FTP服务程序,在易用性.配置性上比vsftp较方便,下面我们使用centos6演示安装和配置pure-ftpd. 安装e ...
- POJ3061 Subsequence 尺取or二分
Description A sequence of N positive integers (10 < N < 100 000), each of them less than or eq ...
- ELK 企业内部日志分析系统
生产环境配置 亿级规模,建议64G内存+8核CPU ES JVM占用一半内存 生产环境的3节点的集群 https://blog.csdn.net/xuduorui/article/details/79 ...
- 【CodeForces】932 E. Team Work
[题目]E. Team Work [题意]给定n和k,n个人中选择一个大小为x非空子集的代价是x^k,求所有非空子集的代价和%1e9+7.n<=10^9,k<=5000. [算法]斯特林反 ...
- 关于linux下crontab mysql备份出来的数据为0字节的问题
问题出在计划任务所执行的脚本上! 脚本中的调用的指令应该都写全路径~ 实例: # crontab -c 编辑下的内容 30 18 * * * /root/backup.sh 意思为:每天18:30执行 ...
- python初步学习-python函数 (二)
几个特殊的函数(待补充) python是支持多种范型的语言,可以进行所谓函数式编程,其突出体现在有这么几个函数: filter.map.reduce.lambda.yield lambda >& ...
- Django之前端插件定制之表头
什么是插件? 插件只是辅助,是开发过程中的一个阶段.一般项目一期会用各种插件,迅速将功能.界面搭出来,二期时就改成自己的代码了.大点的公司都有自己的js库,自己开发类似jquery的库. 那接下来就写 ...
- 分享6款国内、外开源PHP轻论坛CMS程序
第一.Startbbs Startbbs,一款国产个人兴趣分享的轻论坛程序,采用PHP+MYSQL架构,目前版本是V1.1.5,之前我也 有搭建使用过功能还是比较简单的,默认风格比较让普通用户接受,这 ...
- SpringMVC可以配置多个拦截后缀*.action和.do等
首先介绍一下.do和.action的区别: struts早期的1版本,以.do为后缀. 同时spring的MVC也是以.do为后缀. 几年前struts收购鼎鼎大名的webwork2和开发团队后,将w ...