feat: add tiny theme.

This commit is contained in:
rabbitism
2024-08-10 00:42:06 +08:00
parent b0c86e91a1
commit d8740e540b
3 changed files with 84 additions and 18 deletions

View File

@@ -28,5 +28,8 @@
Command="{Binding LoadPageCommand}"
CommandParameter="{Binding $self.CurrentPage}"
TotalCount="600" />
<TextBlock Text="Tiny Pagination"/>
<u:Pagination Theme="{DynamicResource TinyPagination}" TotalCount="100" PageSize="1"/>
</StackPanel>
</UserControl>

View File

@@ -8,31 +8,42 @@
</StackPanel>
</Design.PreviewWith>
<!-- Add Resources Here -->
<ControlTheme x:Key="{x:Type u:Pagination}" TargetType="u:Pagination">
<ControlTheme x:Key="{x:Type u:Pagination}"
TargetType="u:Pagination">
<Setter Property="Template">
<ControlTemplate TargetType="u:Pagination">
<StackPanel Orientation="Horizontal">
<u:PaginationButton u:DisabledAdorner.IsEnabled="True" Name="{x:Static u:Pagination.PART_PreviousButton}">
<u:PaginationButton
u:DisabledAdorner.IsEnabled="True"
Name="{x:Static u:Pagination.PART_PreviousButton}">
<PathIcon
Width="12"
Height="12"
Data="{DynamicResource PaginationBackwardGlyph}"
Foreground="{DynamicResource PaginationButtonIconForeground}" />
</u:PaginationButton>
<StackPanel Name="{x:Static u:Pagination.PART_ButtonPanel}" Orientation="Horizontal" />
<u:PaginationButton u:DisabledAdorner.IsEnabled="True" Name="{x:Static u:Pagination.PART_NextButton}">
<StackPanel
Name="{x:Static u:Pagination.PART_ButtonPanel}"
Orientation="Horizontal" />
<u:PaginationButton
u:DisabledAdorner.IsEnabled="True"
Name="{x:Static u:Pagination.PART_NextButton}">
<PathIcon
Width="12"
Height="12"
Data="{DynamicResource PaginationForwardGlyph}"
Foreground="{DynamicResource PaginationButtonIconForeground}" />
</u:PaginationButton>
<StackPanel Orientation="Horizontal" IsVisible="{TemplateBinding ShowQuickJump}">
<StackPanel Orientation="Horizontal"
IsVisible="{TemplateBinding ShowQuickJump}">
<TextBlock
Margin="4 0"
VerticalAlignment="Center"
Text="{DynamicResource STRING_PAGINATION_JUMP_TO}" />
<u:NumericIntUpDown x:Name="{x:Static u:Pagination.PART_QuickJumpInput}" ShowButtonSpinner="False" Width="50"></u:NumericIntUpDown>
<u:NumericIntUpDown
x:Name="{x:Static u:Pagination.PART_QuickJumpInput}"
ShowButtonSpinner="False"
Width="50" />
<TextBlock
Margin="4 0"
VerticalAlignment="Center"
@@ -48,16 +59,63 @@
</Setter>
</ControlTheme>
<ControlTheme x:Key="{x:Type u:PaginationButton}" TargetType="u:PaginationButton">
<Setter Property="Content" Value="{Binding $self.Page}" />
<ControlTheme x:Key="TinyPagination"
TargetType="{x:Type u:Pagination}">
<Setter Property="Template">
<ControlTemplate TargetType="u:Pagination">
<StackPanel Orientation="Horizontal">
<u:PaginationButton
u:DisabledAdorner.IsEnabled="True"
Name="{x:Static u:Pagination.PART_PreviousButton}">
<PathIcon
Width="12"
Height="12"
Data="{DynamicResource PaginationBackwardGlyph}"
Foreground="{DynamicResource PaginationButtonIconForeground}" />
</u:PaginationButton>
<StackPanel Orientation="Horizontal">
<u:NumericIntUpDown
Value="{TemplateBinding CurrentPage, Mode=TwoWay}"
ShowButtonSpinner="False"
HorizontalContentAlignment="Center"
MinWidth="{Binding $self.Bounds.Height}"
VerticalAlignment="Center" />
<TextBlock Text="/"
Margin="8 0"
VerticalAlignment="Center" />
<SelectableTextBlock
Text="{TemplateBinding PageCount}"
VerticalAlignment="Center" />
</StackPanel>
<u:PaginationButton
u:DisabledAdorner.IsEnabled="True"
Name="{x:Static u:Pagination.PART_NextButton}">
<PathIcon
Width="12"
Height="12"
Data="{DynamicResource PaginationForwardGlyph}"
Foreground="{DynamicResource PaginationButtonIconForeground}" />
</u:PaginationButton>
</StackPanel>
</ControlTemplate>
</Setter>
</ControlTheme>
<ControlTheme x:Key="{x:Type u:PaginationButton}"
TargetType="u:PaginationButton">
<Setter Property="Content"
Value="{Binding $self.Page}" />
<Setter Property="BorderBrush" Value="Transparent" />
<Setter Property="MinWidth" Value="32" />
<Setter Property="MinHeight" Value="32" />
<Setter Property="Background" Value="{DynamicResource PaginationButtonDefaultBackground}" />
<Setter Property="Foreground" Value="{DynamicResource PaginationButtonDefaultForeground}" />
<Setter Property="Background"
Value="{DynamicResource PaginationButtonDefaultBackground}" />
<Setter Property="Foreground"
Value="{DynamicResource PaginationButtonDefaultForeground}" />
<Setter Property="Cursor" Value="Hand" />
<Setter Property="Template">
<ControlTemplate TargetType="u:PaginationButton">
<ControlTemplate
TargetType="u:PaginationButton">
<Border
Padding="4"
Background="{TemplateBinding Background}"
@@ -74,10 +132,12 @@
</ControlTemplate>
</Setter>
<Style Selector="^:pointerover">
<Setter Property="Background" Value="{DynamicResource PaginationButtonPointeroverBackground}" />
<Setter Property="Background"
Value="{DynamicResource PaginationButtonPointeroverBackground}" />
</Style>
<Style Selector="^:pressed">
<Setter Property="Background" Value="{DynamicResource PaginationButtonPressedBackground}" />
<Setter Property="Background"
Value="{DynamicResource PaginationButtonPressedBackground}" />
</Style>
<Style Selector="^:left">
<Setter Property="Content">
@@ -124,10 +184,13 @@
</Style>
</Style>
<Style Selector="^:selected">
<Setter Property="Background" Value="{DynamicResource PaginationButtonSelectedBackground}" />
<Setter Property="Foreground" Value="{DynamicResource PaginationButtonSelectedForeground}" />
<Setter Property="FontWeight" Value="{DynamicResource TextBlockTitleFontWeight}" />
<Setter Property="Background"
Value="{DynamicResource PaginationButtonSelectedBackground}" />
<Setter Property="Foreground"
Value="{DynamicResource PaginationButtonSelectedForeground}" />
<Setter Property="FontWeight"
Value="{DynamicResource TextBlockTitleFontWeight}" />
</Style>
</ControlTheme>
</ResourceDictionary>
</ResourceDictionary>

View File

@@ -46,7 +46,7 @@ public class Pagination: TemplatedControl
if (arg2 is null) return null;
if (arg1 is Pagination p)
{
arg2 = MathHelpers.SafeClamp(arg2.Value, 1, p.PageCount + 1);
arg2 = MathHelpers.SafeClamp(arg2.Value, 1, p.PageCount);
}
return arg2;
}