首先声明,我是一个小菜鸟,学习WPF也就2个月,如果写的不对的地方,请批评指正。
因为想做一个WPF分页页面,网上找了很多示例程序,大部分都要求使用存储过称,与业务合在一起,控件的通用性不够强。
在我看来,分页控件只需要知道数据有多少页、当前是第几页就可以了,上一页、下一页等命令使用事件或者委托发送出去,实现控件与业务的分离。在这里我采用了MVVM模式来实现分页控件,使用MVVM一定要记住:数据驱动UI界面,尽可能不在后台代码中编写业务逻辑和界面逻辑。示例代码使用了Prism,请引用相关DLL。
首先新建一个自定义控件UserControl
1 <UserControl x:Class="ZhuanKeWebTool.WPF.Content.UCPager" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 5 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 6 mc:Ignorable="d" 7 d:DesignHeight="30" d:DesignWidth="500"> 8 <Grid Background="AliceBlue"> 9 <Grid.ColumnDefinitions> 10 <ColumnDefinition Width="80" /> 11 <ColumnDefinition Width="*" /> 12 <ColumnDefinition Width="20" /> 13 <ColumnDefinition Width="20" /> 14 <ColumnDefinition Width="Auto" /> 15 <ColumnDefinition Width="20" /> 16 <ColumnDefinition Width="20" /> 17 </Grid.ColumnDefinitions> 18 <StackPanel Orientation="Horizontal"> 19 <TextBlock Text="共 " HorizontalAlignment="Left" Height="15" Margin="10,0,0,0"/> 20 <TextBlock Text="{Binding RecordCount}" VerticalAlignment="Center"/> 21 <TextBlock Text=" 条" VerticalAlignment="Center"/> 22 </StackPanel> 23 24 <Button Grid.Column="2" ToolTip="首页" Padding="0" Command="{Binding HomePageCommand}"> 25 <Button.Content> 26 <Image Width="12" Source="../Resources/Images/fastrewind.png"/> 27 </Button.Content> 28 </Button> 29 <Button Grid.Column="3" ToolTip="上一页" Padding="0" Command="{Binding PreviousPageCommand}"> 30 <Button.Content> 31 <Image Width="12" Source="../Resources/Images/skiprewind.png"/> 32 </Button.Content> 33 </Button> 34 35 <WrapPanel Grid.Column="4" HorizontalAlignment="Center" VerticalAlignment="Center"> 36 <TextBlock Text="第" VerticalAlignment="Center"/> 37 <ComboBox ItemsSource="{Binding IndexList}" SelectedItem="{Binding PageIndex}" Width="50"/> 38 <TextBlock Text="页" VerticalAlignment="Center"/> 39 </WrapPanel> 40 41 <Button Grid.Column="5" ToolTip="下一页" Padding="0" Command="{Binding NextPageCommand}"> 42 <Button.Content> 43 <Image Width="12" Source="../Resources/Images/skipforward.png"/> 44 </Button.Content> 45 </Button> 46 <Button Grid.Column="6" ToolTip="尾页" Padding="0" Command="{Binding TailPageCommand}"> 47 <Button.Content> 48 <Image Width="12" Source="../Resources/Images/fastforward.png"/> 49 </Button.Content> 50 </Button> 51 52 </Grid> 53 </UserControl>