272 lines
15 KiB
Plaintext
272 lines
15 KiB
Plaintext
|
|
<UserControl x:Class="InSituLaboratory.Controls.Pagination"
|
||
|
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||
|
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||
|
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||
|
|
xmlns:local="clr-namespace:InSituLaboratory.Controls"
|
||
|
|
xmlns:sys="clr-namespace:System;assembly=System.Runtime"
|
||
|
|
mc:Ignorable="d"
|
||
|
|
d:DesignHeight="450" d:DesignWidth="800">
|
||
|
|
<UserControl.Resources>
|
||
|
|
<x:Array Type="sys:Int32" x:Key="counts">
|
||
|
|
<sys:Int32>10</sys:Int32>
|
||
|
|
<sys:Int32>15</sys:Int32>
|
||
|
|
<sys:Int32>20</sys:Int32>
|
||
|
|
<sys:Int32>30</sys:Int32>
|
||
|
|
<sys:Int32>50</sys:Int32>
|
||
|
|
</x:Array>
|
||
|
|
|
||
|
|
|
||
|
|
<LinearGradientBrush x:Key="MouseOver.Background"
|
||
|
|
EndPoint="0,1" StartPoint="0,0">
|
||
|
|
<GradientStop Color="#FFECF4FC" Offset="0.0"/>
|
||
|
|
<GradientStop Color="#FFDCECFC" Offset="1.0"/>
|
||
|
|
</LinearGradientBrush>
|
||
|
|
|
||
|
|
<Style TargetType="Button" x:Key="FlipButtonStyle">
|
||
|
|
<Setter Property="Foreground" Value="#555"/>
|
||
|
|
<Setter Property="Background" Value="Transparent"/>
|
||
|
|
<Setter Property="BorderThickness" Value="1"/>
|
||
|
|
<Setter Property="Width" Value="33"/>
|
||
|
|
<Setter Property="Height" Value="27"/>
|
||
|
|
<Setter Property="Template">
|
||
|
|
<Setter.Value>
|
||
|
|
<ControlTemplate TargetType="{x:Type Button}">
|
||
|
|
<Border Background="{TemplateBinding Background}"
|
||
|
|
BorderBrush="#EEE" BorderThickness="{TemplateBinding BorderThickness}"
|
||
|
|
CornerRadius="5"
|
||
|
|
Name="back">
|
||
|
|
<ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center" Name="content"/>
|
||
|
|
</Border>
|
||
|
|
</ControlTemplate>
|
||
|
|
</Setter.Value>
|
||
|
|
</Setter>
|
||
|
|
<Style.Triggers>
|
||
|
|
<Trigger Property="IsMouseOver" Value="True">
|
||
|
|
<Setter Property="Background" Value="{StaticResource MouseOver.Background}"/>
|
||
|
|
<Setter Property="BorderBrush" Value="#FF7EB4EA"/>
|
||
|
|
</Trigger>
|
||
|
|
<Trigger Property="IsEnabled" Value="False">
|
||
|
|
<Setter Property="Foreground" Value="#CCC"/>
|
||
|
|
<Setter Property="BorderThickness" Value="0"/>
|
||
|
|
</Trigger>
|
||
|
|
</Style.Triggers>
|
||
|
|
</Style>
|
||
|
|
|
||
|
|
<Style TargetType="CheckBox" x:Key="PageNumberButtonStyle">
|
||
|
|
<Setter Property="Margin" Value="1,0"/>
|
||
|
|
<Setter Property="Foreground" Value="#888"/>
|
||
|
|
<Setter Property="Background" Value="Transparent"/>
|
||
|
|
<Setter Property="BorderThickness" Value="1"/>
|
||
|
|
<Setter Property="Template">
|
||
|
|
<Setter.Value>
|
||
|
|
<ControlTemplate TargetType="CheckBox">
|
||
|
|
<Border Background="{TemplateBinding Background}" Name="root" CornerRadius="5"
|
||
|
|
BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="#EEE"
|
||
|
|
Height="27" Width="27">
|
||
|
|
<TextBlock Text="{TemplateBinding Content}" VerticalAlignment="Center" HorizontalAlignment="Center"/>
|
||
|
|
</Border>
|
||
|
|
</ControlTemplate>
|
||
|
|
</Setter.Value>
|
||
|
|
</Setter>
|
||
|
|
<Style.Triggers>
|
||
|
|
<Trigger Property="IsMouseOver" Value="True">
|
||
|
|
<Setter Property="Background" Value="#EEE"/>
|
||
|
|
</Trigger>
|
||
|
|
<Trigger Property="IsChecked" Value="True">
|
||
|
|
<Setter Property="Background" Value="#409EFE"/>
|
||
|
|
<Setter Property="Foreground" Value="White"/>
|
||
|
|
</Trigger>
|
||
|
|
<Trigger Property="IsEnabled" Value="False">
|
||
|
|
<Setter Property="BorderThickness" Value="0"/>
|
||
|
|
</Trigger>
|
||
|
|
</Style.Triggers>
|
||
|
|
</Style>
|
||
|
|
|
||
|
|
|
||
|
|
<Style x:Key="ComboBoxToggleButton" TargetType="{x:Type ToggleButton}">
|
||
|
|
<Setter Property="OverridesDefaultStyle" Value="true"/>
|
||
|
|
<Setter Property="IsTabStop" Value="false"/>
|
||
|
|
<Setter Property="Focusable" Value="false"/>
|
||
|
|
<Setter Property="ClickMode" Value="Press"/>
|
||
|
|
<Setter Property="Height" Value="27"/>
|
||
|
|
<Setter Property="Template">
|
||
|
|
<Setter.Value>
|
||
|
|
<ControlTemplate TargetType="{x:Type ToggleButton}">
|
||
|
|
<Border x:Name="templateRoot" SnapsToDevicePixels="true" Background="Transparent"
|
||
|
|
BorderBrush="#EEE" BorderThickness="1" CornerRadius="5">
|
||
|
|
<Border x:Name="splitBorder" Width="25" SnapsToDevicePixels="true" Margin="0"
|
||
|
|
HorizontalAlignment="Right" BorderThickness="1" BorderBrush="Transparent">
|
||
|
|
<Path x:Name="arrow" VerticalAlignment="Center" Margin="0" HorizontalAlignment="Center"
|
||
|
|
Stroke="Gray" StrokeThickness="1"
|
||
|
|
Data="M0 0 4 4 8 0"/>
|
||
|
|
</Border>
|
||
|
|
</Border>
|
||
|
|
<ControlTemplate.Triggers>
|
||
|
|
<MultiDataTrigger>
|
||
|
|
<MultiDataTrigger.Conditions>
|
||
|
|
<Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="true"/>
|
||
|
|
<Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="false"/>
|
||
|
|
</MultiDataTrigger.Conditions>
|
||
|
|
<Setter Property="Background" TargetName="templateRoot" Value="{StaticResource MouseOver.Background}"/>
|
||
|
|
<Setter Property="BorderBrush" TargetName="templateRoot" Value="#FF7EB4EA"/>
|
||
|
|
</MultiDataTrigger>
|
||
|
|
</ControlTemplate.Triggers>
|
||
|
|
</ControlTemplate>
|
||
|
|
</Setter.Value>
|
||
|
|
</Setter>
|
||
|
|
</Style>
|
||
|
|
|
||
|
|
<ControlTemplate x:Key="ComboBoxTemplate" TargetType="{x:Type ComboBox}">
|
||
|
|
<Border Background="Transparent" CornerRadius="0,10,10,0">
|
||
|
|
<Grid x:Name="templateRoot" SnapsToDevicePixels="true">
|
||
|
|
<Grid.ColumnDefinitions>
|
||
|
|
<ColumnDefinition Width="*"/>
|
||
|
|
<ColumnDefinition Width="20"/>
|
||
|
|
</Grid.ColumnDefinitions>
|
||
|
|
<Popup x:Name="PART_Popup" AllowsTransparency="true" Grid.ColumnSpan="2"
|
||
|
|
IsOpen="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"
|
||
|
|
Margin="1" PopupAnimation="{DynamicResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}"
|
||
|
|
Placement="Bottom">
|
||
|
|
|
||
|
|
<Border x:Name="dropDownBorder" BorderBrush="#EEE" BorderThickness="1"
|
||
|
|
Background="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"
|
||
|
|
MaxHeight="{TemplateBinding MaxDropDownHeight}"
|
||
|
|
MinWidth="{Binding ActualWidth,ElementName=templateRoot}"
|
||
|
|
CornerRadius="5" Margin="3">
|
||
|
|
<Border.Effect>
|
||
|
|
<DropShadowEffect BlurRadius="5" Color="Gray" ShadowDepth="0" Opacity="0.2"/>
|
||
|
|
</Border.Effect>
|
||
|
|
<ScrollViewer x:Name="DropDownScrollViewer" Background="Transparent">
|
||
|
|
<Grid x:Name="grid" RenderOptions.ClearTypeHint="Enabled">
|
||
|
|
<Canvas x:Name="canvas" HorizontalAlignment="Left" Height="0" VerticalAlignment="Top" Width="0">
|
||
|
|
<Rectangle x:Name="opaqueRect" Fill="{Binding Background, ElementName=dropDownBorder}"
|
||
|
|
Height="{Binding ActualHeight, ElementName=dropDownBorder}"
|
||
|
|
Width="{Binding ActualWidth, ElementName=dropDownBorder}"
|
||
|
|
RadiusX="5" RadiusY="5"/>
|
||
|
|
</Canvas>
|
||
|
|
<ItemsPresenter x:Name="ItemsPresenter" KeyboardNavigation.DirectionalNavigation="Contained"
|
||
|
|
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
|
||
|
|
</Grid>
|
||
|
|
</ScrollViewer>
|
||
|
|
</Border>
|
||
|
|
</Popup>
|
||
|
|
<ToggleButton x:Name="toggleButton" BorderThickness="0" Background="Transparent"
|
||
|
|
Grid.ColumnSpan="2" IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"
|
||
|
|
Style="{StaticResource ComboBoxToggleButton}"/>
|
||
|
|
<ContentControl x:Name="contentPresenter" Margin="5,0"
|
||
|
|
ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}"
|
||
|
|
ContentStringFormat="{TemplateBinding SelectionBoxItemStringFormat}"
|
||
|
|
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
|
||
|
|
IsHitTestVisible="false"
|
||
|
|
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
|
||
|
|
VerticalAlignment="Center">
|
||
|
|
<TextBlock>
|
||
|
|
<Run Text="{Binding SelectionBoxItem,RelativeSource={RelativeSource AncestorType=ComboBox,Mode=FindAncestor},Mode=OneWay}"/>
|
||
|
|
<Run Text="条/页"/>
|
||
|
|
</TextBlock>
|
||
|
|
</ContentControl>
|
||
|
|
</Grid>
|
||
|
|
</Border>
|
||
|
|
<ControlTemplate.Triggers>
|
||
|
|
<Trigger Property="HasItems" Value="false">
|
||
|
|
<Setter Property="Height" TargetName="dropDownBorder" Value="95"/>
|
||
|
|
</Trigger>
|
||
|
|
<Trigger Property="ScrollViewer.CanContentScroll" SourceName="DropDownScrollViewer" Value="false">
|
||
|
|
<Setter Property="Canvas.Top" TargetName="opaqueRect" Value="{Binding VerticalOffset, ElementName=DropDownScrollViewer}"/>
|
||
|
|
<Setter Property="Canvas.Left" TargetName="opaqueRect" Value="{Binding HorizontalOffset, ElementName=DropDownScrollViewer}"/>
|
||
|
|
</Trigger>
|
||
|
|
</ControlTemplate.Triggers>
|
||
|
|
</ControlTemplate>
|
||
|
|
|
||
|
|
<Style x:Key="PagesComboBoxStyle" TargetType="{x:Type ComboBox}">
|
||
|
|
<Setter Property="FocusVisualStyle" Value="{x:Null}"/>
|
||
|
|
<Setter Property="Background" Value="Transparent"/>
|
||
|
|
<Setter Property="Foreground" Value="#777"/>
|
||
|
|
<Setter Property="BorderThickness" Value="0"/>
|
||
|
|
<Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/>
|
||
|
|
<Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/>
|
||
|
|
<Setter Property="Padding" Value="6,3,5,3"/>
|
||
|
|
<Setter Property="ScrollViewer.CanContentScroll" Value="true"/>
|
||
|
|
<Setter Property="ScrollViewer.PanningMode" Value="Both"/>
|
||
|
|
<Setter Property="Stylus.IsFlicksEnabled" Value="False"/>
|
||
|
|
<Setter Property="Margin" Value="1,0"/>
|
||
|
|
<Setter Property="Template" Value="{StaticResource ComboBoxTemplate}"/>
|
||
|
|
</Style>
|
||
|
|
|
||
|
|
<Style TargetType="ComboBoxItem">
|
||
|
|
<Setter Property="Height" Value="30"/>
|
||
|
|
<Setter Property="Template">
|
||
|
|
<Setter.Value>
|
||
|
|
<ControlTemplate TargetType="ComboBoxItem">
|
||
|
|
<Border Background="{TemplateBinding Background}" CornerRadius="4">
|
||
|
|
<TextBlock VerticalAlignment="Center" Margin="5,0">
|
||
|
|
<Run Text="{Binding Path=.,Mode=OneWay}"/>
|
||
|
|
<Run Text="条/页"/>
|
||
|
|
</TextBlock>
|
||
|
|
</Border>
|
||
|
|
</ControlTemplate>
|
||
|
|
</Setter.Value>
|
||
|
|
</Setter>
|
||
|
|
<Style.Triggers>
|
||
|
|
<Trigger Property="IsMouseOver" Value="True">
|
||
|
|
<Setter Property="Background" Value="#22409EFE"/>
|
||
|
|
</Trigger>
|
||
|
|
<Trigger Property="IsSelected" Value="True">
|
||
|
|
<Setter Property="Background" Value="#409EFE"/>
|
||
|
|
<Setter Property="Foreground" Value="White"/>
|
||
|
|
</Trigger>
|
||
|
|
</Style.Triggers>
|
||
|
|
</Style>
|
||
|
|
</UserControl.Resources>
|
||
|
|
<Grid>
|
||
|
|
<Grid.ColumnDefinitions>
|
||
|
|
<ColumnDefinition Width="auto"/>
|
||
|
|
<ColumnDefinition/>
|
||
|
|
<ColumnDefinition Width="auto"/>
|
||
|
|
<ColumnDefinition Width="auto"/>
|
||
|
|
</Grid.ColumnDefinitions>
|
||
|
|
<Button Style="{StaticResource FlipButtonStyle}"
|
||
|
|
IsEnabled="{Binding IsCanPrevious}"
|
||
|
|
Command="{Binding NavCommand}"
|
||
|
|
CommandParameter="{Binding PreviousIndex}">
|
||
|
|
<Path Data="M5,0 0 5 5 10" Stroke="{Binding Foreground,RelativeSource={RelativeSource AncestorType=Button}}" StrokeThickness="1"
|
||
|
|
StrokeStartLineCap="Round" StrokeEndLineCap="Round"/>
|
||
|
|
</Button>
|
||
|
|
<Button Grid.Column="2" Style="{StaticResource FlipButtonStyle}"
|
||
|
|
IsEnabled="{Binding IsCanNext}"
|
||
|
|
Command="{Binding NavCommand}"
|
||
|
|
CommandParameter="{Binding NextIndex}">
|
||
|
|
<Path Data="M5,0 0 5 5 10" Stroke="{Binding Foreground,RelativeSource={RelativeSource AncestorType=Button}}" StrokeThickness="1"
|
||
|
|
StrokeStartLineCap="Round" StrokeEndLineCap="Round" RenderTransformOrigin="0.5,0.5">
|
||
|
|
<Path.RenderTransform>
|
||
|
|
<RotateTransform Angle="180"/>
|
||
|
|
</Path.RenderTransform>
|
||
|
|
</Path>
|
||
|
|
</Button>
|
||
|
|
<ComboBox Grid.Column="3" SelectedItem="{Binding PageSize}"
|
||
|
|
ItemsSource="{Binding Source={StaticResource counts}}"
|
||
|
|
Style="{StaticResource PagesComboBoxStyle}"
|
||
|
|
Width="80"/>
|
||
|
|
|
||
|
|
<ItemsControl Grid.Column="1" ItemsSource="{Binding PageNumList}">
|
||
|
|
<ItemsControl.ItemsPanel>
|
||
|
|
<ItemsPanelTemplate>
|
||
|
|
<UniformGrid Rows="1"/>
|
||
|
|
</ItemsPanelTemplate>
|
||
|
|
</ItemsControl.ItemsPanel>
|
||
|
|
<ItemsControl.ItemTemplate>
|
||
|
|
<DataTemplate>
|
||
|
|
<!--1、页码 2、是否选中-->
|
||
|
|
<CheckBox Content="{Binding Index}"
|
||
|
|
IsChecked="{Binding IsCurrent}"
|
||
|
|
Style="{StaticResource PageNumberButtonStyle}"
|
||
|
|
IsEnabled="{Binding IsEnabled}"
|
||
|
|
Command="{Binding DataContext.NavCommand,RelativeSource={RelativeSource AncestorType=ItemsControl}}"
|
||
|
|
CommandParameter="{Binding Index}"/>
|
||
|
|
</DataTemplate>
|
||
|
|
</ItemsControl.ItemTemplate>
|
||
|
|
</ItemsControl>
|
||
|
|
</Grid>
|
||
|
|
</UserControl>
|