C# WPF 分页插件

本文介绍了一位开发者在C# WPF项目中遇到分页需求时,如何简化复杂网络上的分页教程,创建自己的分页插件。文章通过前言介绍了背景,思路部分讲解了分页的核心属性和按钮状态变化机制。接着展示了分页实体类、XAML布局和分页工具类的代码实现。最后,给出了实际应用的效果图。
摘要由CSDN通过智能技术生成

一,前言

最近项目中开发一个小工具,使用的是C# ,用到分页这一块,也是一边学习一边做项目,但是对于分页而言在网上找到许多资料,说实话有点看不懂,感觉很复杂。不过资料中基本都是围绕触发器来写,自定义插件类,触发器类然后引入项目,感觉很复杂,于是就自己写一个。毕竟分页插件的核心也就是那几点,我将那些类合并成一个。不过自己写出来的扩展性不强,而且代码臃肿,只是实现了现在的需求,贴出来大家学习学习,也希望大佬看到后指点指点。,先看下效果图:需要说明一点,因为项目只是写个小的工具,所以数据存储没有使用数据库,是直接存在文件中的,数据都是从文件中抓取的

二,思路

分页重要属性:总页数,分页数据条数,当前页码,总条数

按钮的变化:我主要是通过flag真假标记来实现

三,代码

1,分页实体类,我是将按钮和分页属性合并在一起直接使用的,我这里只用到了8个按钮,如果需要更多可以自己添加,理论上是无限加长的

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

//分页数据书体类
namespace Model
{
   public class Pages
    {
        public int pages{ get; set; } //总页数
        public int count { get; set; } //每页显示条数

        public int sum { get; set; } //总条数

        //窗体页面引用四个页按钮,定义为button(1-4)
        public int button1 { get; set; }
        public int button2 { get; set; }
        public int button3 { get; set; }
        public int button4 { get; set; }

        public int currentPage { get; set; } //当前页

        public string text { get; set; }//文本信息

        public bool flag1 { get; set; }//判断是否为当前页的标记,对应按钮button1
        public bool flag2 { get; set; }//判断是否为当前页的标记,对应按钮button2
        public bool flag3 { get; set; }//判断是否为当前页的标记,对应按钮button3
        public bool flag4 { get; set; }//判断是否为当前页的标记,对应按钮button4
        public bool flag5{ get; set; }//判断是否为当前页的标记,对应按钮首页 定义值为 -10
        public bool flag6 { get; set; }//判断是否为当前页的标记,对应按钮尾页  定义值为 -1
        public bool flag7 { get; set; }//判断是否为当前页的标记,对应按钮上一页 定义值为 -5
        public bool flag8 { get; set; }//判断是否为当前页的标记,对应按钮下一页  定义值为 -6

        public bool flag9 { get; set; }//判断是否还有上一页
        public bool flag10 { get; set; }//判断是否还有下一页


        //判断页的范围区间
        public bool page_flag1 { get; set; }
        public bool page_flag2 { get; set; }
        public bool page_flag3 { get; set; }
        public bool page_flag4 { get; set; }

        public bool label_flag { get; set; }

    }
}

2,xaml:定义好按钮格式

      <Grid Grid.Row="3" x:Name="pg" Loaded="pg_Loaded">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>
            <StackPanel Grid.Column="0" Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
                <Button x:Name="first_button" Click="first_button_Click">
                    <Button.Style>
                        <Style TargetType="{x:Type Button}">
                            <Setter Property="Width" Value="40px"/>
                            <Setter Property="Height" Value="30px"/>
                            <Setter Property="HorizontalAlignment" Value="Center"/>
                            <Setter Property="Content" Value="首页"/>
                            <Setter Property="VerticalAlignment" Value="Center"/>
                            <Setter Property="Margin" Value="10,0,0,0"/>
                            <Setter Property="Visibility" Value="Visible"/>
                            <Setter Property="Tag" Value="1"></Setter>
                            <Setter Property="Template">
                                <Setter.Value>
                                    <ControlTemplate>
                                        <Border x:Name="boder" BorderThickness="1,1,1,1" BorderBrush="Black" Background="White">
                                            <TextBlock x:Name="text1" Text="首页" VerticalAlignment="Center" HorizontalAlignment="Center"/>
                                        </Border>
                                        <ControlTemplate.Triggers>
                                            <Trigger Property="IsMouseOver" Value="True">
                                                <Setter Property="Background" Value="#FF0DD1F0" TargetName="boder"/>
                                                <Setter Property="BorderThickness" Value="1" TargetName="boder"/>
                                                <Setter Property="BorderBrush" Value="#FF0DD1F0" TargetName="boder"/>
                                            </Trigger>
                                            <DataTrigger Binding="{Binding Path=currentPage}" Value="1">
                                                <Setter Property="Background" Value="#FFD7D7D7" TargetName="boder"/>
                                                <Setter Property="BorderThickness" Value="1" TargetName="boder"/>
                                                <Setter Property="IsEnabled" Value="False"></Setter>
                                            </DataTrigger>
                                            <DataTrigger Binding="{Binding Path=flag5}" Value="true">
                                                <Setter Property="Background" Value="#FF0DD1F0" TargetName="boder"/>
                                                <Setter Property="BorderThickness" Value="1" TargetName="boder"/>
                                                <Setter Property="IsEnabled" Value="False"></Setter>
                                            </DataTrigger>
                                        </ControlTemplate.Triggers>
                                    </ControlTemplate>
                                </Setter.Value>
                            </Setter>
                        </Style>
                    </Button.Style>
                </Button>
                <Button x:Name="up_button" Click="up_button_Click">
                    <Button.Style>
                        <Style TargetType="{x:Type Button}">
                            <Setter Property="Width" Value="40px"/>
                            <Setter Property="Height" Value="30px"/>
                            <Setter Property="HorizontalAlignment" Value="Center"/>
                            <Setter Property="Content" Value="&lt;&lt;"/>
                            <Setter Property="VerticalAlignment" Value="Center"/>
                            <Setter Property="Margin" Value="10,0,0,0"/>
                            <Setter Property="Visibility" Value="Visible"/>
                            <Setter Property="Tag" Value="{Binding currentPage}"></Setter>
                            <Setter Property="Template">
                                <Setter.Value>
                                    <ControlTemplate>
                                        <Border x:Name="boder" BorderThickness="1,1,1,1" BorderBrush="Black" Background="White">
                                            <TextBlock x:Name="text1" Text="&lt;&lt;" VerticalAlignment="Center" HorizontalAlignment="Center"/>
                                        </Border>
                                        <ControlTemplate.Triggers>
                                            <Trigger Property="IsMouseOver" Value="True">
                                                <Setter Property="Background" Value="#FF0DD1F0" TargetName="boder"/>
                                                <Setter Property="BorderThickness" Value="1" TargetName="boder"/>
                                                <
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值