昨天的代码经过大佬的指点,又优化了一下,

看看优化了哪些:

在Pagination类中添加事件定义:

public static readonly RoutedEvent IndexChangedEvent = EventManager.RegisterRoutedEvent("IndexChanged", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(Pagination));//CLR事件包装public event RoutedEventHandler IndexChanged{add { this.AddHandler(IndexChangedEvent, value); }remove { this.RemoveHandler(IndexChangedEvent, value); }}

在CurrentPage的改变事件中触发事件:

public int CurrentPage{get { return (int)GetValue(CurrentPageProperty); }set { SetValue(CurrentPageProperty, value); }}public static readonly DependencyProperty CurrentPageProperty =DependencyProperty.Register("CurrentPage", typeof(int), typeof(Pagination), new PropertyMetadata(1, (d, e) =>{if (!(d is Pagination pagination)) return;if (pagination.PageCount > 5){pagination.UpdateControl();}else{pagination.UpdateControlSimple();}RoutedEventArgs args = new RoutedEventArgs(){RoutedEvent = IndexChangedEvent,Source = pagination,};pagination.RaiseEvent(args);}));

然后,MainWindow中绑定事件:

<Window x:Class="WPFDemos.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:WPFDemos"mc:Ignorable="d"x:Name="widnow"WindowStartupLocation="CenterScreen"UseLayoutRounding="True"Background="#F5F5F5"FontSize="16"Title="分页" Height="500" Width="1000"><Grid><StackPanel HorizontalAlignment="Center" VerticalAlignment="Center"><local:Pagination x:Name="pag0" PageCount="3" Height="35" HorizontalAlignment="Center"/><TextBlock Margin="10" HorizontalAlignment="Center"><Run Text="当前页:"/><Run Text="{Binding CurrentPage,ElementName=pag0}"/></TextBlock><local:Pagination x:Name="pag" PageCount="5" Height="35" HorizontalAlignment="Center"/><TextBlock Margin="10" HorizontalAlignment="Center"><Run Text="当前页:"/><Run Text="{Binding CurrentPage,ElementName=pag}"/></TextBlock><local:Pagination x:Name="pag1" PageCount="35" Height="35" IndexChanged="pag1_IndexChanged"/><TextBlock Margin="10" HorizontalAlignment="Center"><Run Text="当前页:"/><Run Text="{Binding CurrentPage,ElementName=pag1}"/></TextBlock></StackPanel></Grid>
</Window>

这样就能直接在index改变的时候,响应改变事件喽。

如果喜欢,点个赞呗~

WPF 分页控件添加路由事件相关推荐

  1. WPF Image控件鼠标双击事件的实现

    WPF Image控件鼠标双击事件的实现 1.绑定Image控件的OnMouseDown事件 <Image x:Name="Image" Margin="0&quo ...

  2. 为.net中的ListBox控件添加双击事件

    我在用dotnet做一个项目的过程中,遇到了一个ListBox的问题:通过在一个ListBox中双击,把选中的项添加到另一个ListBox中,但ListBox控件本身并没有该事件,那么如何实现呢?我就 ...

  3. WPF 分页控件应用

    效果图:    前台代码: <UserControl x:Class="Layout.UI.Comm.Pager"xmlns="http://schemas.mic ...

  4. 自动为DEV GridView控件添加SizeChanged事件

    实现gdv设置的抽象对象,不用每个gdv控件都添加sizechanged事件,只需执行gdc绑定sql函数,在其中会自动添加SizeChanged事件. //2016.5.13 by sngk //根 ...

  5. WPF 分页控件的简单实现

    想做个分页控件,想了想逻辑实现太复杂了,这不,用奇怪的方式实现了它,就如这张图一样... 看看效果: 下面就直接粘代码喽: 新建一个Pagination类: using System; using S ...

  6. Qt给控件添加鼠标事件

    处理控件上的鼠标事件,是做界面人机交互经常需要的,本文做一个使用的总结.本文在QLable控件中实验过. 一.在h文件中声明鼠标响应事件处理函数 public:explicit MainWindow( ...

  7. iOS:分页控件UIPageControl的使用

    分页控件:UIPageControl   功能:通常搭配滚动视图一起使用,设置pagingEnabled=YES即可,UIScrollView会被分割成多个独立页面,用户的滚动体验则变成了页面翻转,一 ...

  8. repeater中后台动态为控件添加属性

    在此贴出repeater中的ItemDataBound事件中的代码: private void ItemDataBound(object sender, RepeaterItemEventArgs e ...

  9. WinForm中使用WPF的控件

    在WinForm中可以使用WPF中的控件,或者由WPF创建的自定义控件: 步骤1:创建WinForm工程: 步骤2:在WinForm工程的解决方案资源管理器中,在刚刚创建的WinForm解决方案中新建 ...

最新文章

  1. 小程序button引导用户授权
  2. 有关函数模板和类模板的说法
  3. Enabling Redo Log Transport Compression with active dataguard
  4. mysql日期和时间类型_MySQL日期和时间类型
  5. 说一说为什么gethostbyname用完后不用释放内存
  6. scala与python混合调用实验
  7. plsql(轻量版)_记录类型1
  8. LetCode-算法-整数反转
  9. linux装服务器系统,linux服务器系统安装
  10. ajax 自动提示信息,自动提示使用AJAX
  11. 完全二叉树的结点数计算
  12. SAP UI5 应用开发教程之六十一 - 在 SAP UI5 应用里绘制甘特图 Gantt Chart 试读版
  13. 程序员如何阅读英文文档
  14. Excel宏编程代码,根据混合的名次合并计算进退值
  15. ps联盟服务器无响应怎么办,PS联盟网新手教程视频
  16. java锟斤拷锟斤拷锟_锟斤拷?UTF-8与GBK互转乱码问题
  17. 从数据仓库到大数据,数据平台这25年是怎样进化的?[转]
  18. 身为品牌广告主,你需要的是的RTB还是PMP
  19. svg-captcha生成验证码以及验证
  20. 在PHP中使用Mockery进行测试驱动开发(TDD) - 上

热门文章

  1. 很好用的ISO制作软件
  2. 在Ubuntu上安装RealPlayer的方法
  3. Java基础 五 方法
  4. 734. [网络流24题] 方格取数问题 二分图点权最大独立集/最小割/最大流
  5. 智能停车O2O 独角兽初现:“ETCP停车”获5000万美金A轮融资
  6. Shell中各种判断语法
  7. 设计模式之-命令模式(Command Pattern)
  8. 【C++ Primer学习笔记】第2章:变量和基本类型
  9. 如何开发一个学生成绩管理糸统(9)
  10. 一张图看懂 SQL 的各种 join 用法