WPF如何自定义写一个好看的分页控件
时间: 2023-08-09 11:04:16 浏览: 414
WPF, datagrid 分页控件
要自定义一个好看的分页控件,可以按照以下步骤:
1. 创建一个新的UserControl,命名为"PagerControl"。
2. 在PagerControl中添加一个ItemsControl,用于显示页码。
3. 添加两个Button,一个用于上一页,一个用于下一页。
4. 添加两个TextBlock,一个用于显示总页数,一个用于显示当前页数。
5. 为Button添加Click事件,并在事件中处理翻页逻辑。
6. 在PagerControl中添加依赖属性,用于绑定总页数和当前页数。
7. 通过样式来美化PagerControl及其内部控件。
以下是一份示例代码,可供参考:
```xml
<UserControl x:Class="PagerControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<UserControl.Resources>
<Style TargetType="{x:Type Button}">
<Setter Property="Margin" Value="2"/>
<Setter Property="Padding" Value="4"/>
<Setter Property="Background" Value="#FF007ACC"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border BorderThickness="1" BorderBrush="#FF007ACC" CornerRadius="2">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#FF005DAE"/>
<Setter Property="Foreground" Value="White"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background" Value="#FF003F87"/>
<Setter Property="Foreground" Value="White"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Background" Value="#FFF4F4F4"/>
<Setter Property="Foreground" Value="#FF999999"/>
<Setter Property="BorderBrush" Value="#FFBCBCBC"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Margin" Value="2"/>
<Setter Property="Padding" Value="2"/>
</Style>
<Style TargetType="{x:Type ItemsControl}">
<Setter Property="Margin" Value="2"/>
<Setter Property="Padding" Value="2"/>
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
<Setter Property="ItemTemplate">
<Setter.Value>
<DataTemplate>
<Button Content="{Binding}" Command="{Binding DataContext.PageCommand, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}" CommandParameter="{Binding}" Style="{StaticResource {x:Type Button}}"/>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</UserControl.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Button Content="<" Command="{Binding PageCommand}" CommandParameter="-1" Style="{StaticResource {x:Type Button}}"/>
<ItemsControl Grid.Column="2" ItemsSource="{Binding Pages}" Style="{StaticResource {x:Type ItemsControl}}"/>
<Button Grid.Column="3" Content=">" Command="{Binding PageCommand}" CommandParameter="1" Style="{StaticResource {x:Type Button}}"/>
<TextBlock Grid.Column="4" Text="{Binding PageCount}"/>
<TextBlock Grid.Column="1" Text="{Binding CurrentPage}"/>
</Grid>
</UserControl>
```
在上述代码中,用到了依赖属性来绑定总页数和当前页数,以及Command绑定来处理翻页逻辑。同时,也使用了样式来美化按钮、文本块及其它控件。
阅读全文