Skip to content

Commit bb1e964

Browse files
authored
Merge pull request #275 from mou-haz/fix_195
fix #195 pipspager animation
2 parents 0291b3f + 5c8649c commit bb1e964

File tree

3 files changed

+35
-23
lines changed

3 files changed

+35
-23
lines changed

source/iNKORE.UI.WPF.Modern.Controls/Controls/Windows/PipsPager/PipsPager.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Collections.Generic;
33
using System.Collections.ObjectModel;
44
using System.ComponentModel;
5+
using System.Diagnostics;
56
using System.Linq;
67
using System.Text;
78
using System.Threading.Tasks;
@@ -262,15 +263,15 @@ void ScrollToCenterOfViewport(UIElement sender, int index)
262263
pipSize = m_defaultPipSize.Width;
263264
changeViewFunc = (double offset) =>
264265
{
265-
scrollViewer.ChangeView(offset, null, null, true);
266+
scrollViewer.ChangeView(offset, null, null, false);
266267
};
267268
}
268269
else
269270
{
270271
pipSize = m_defaultPipSize.Height;
271272
changeViewFunc = (double offset) =>
272273
{
273-
scrollViewer.ChangeView(null, offset, null, true);
274+
scrollViewer.ChangeView(null, offset, null, false);
274275
};
275276
}
276277
int maxVisualIndicators = MaxVisiblePips;

source/iNKORE.UI.WPF.Modern/Controls/ScrollViewerEx.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using iNKORE.UI.WPF.Modern.Controls.Helpers;
22
using iNKORE.UI.WPF.Modern.Controls.Primitives;
33
using System;
4+
using System.Diagnostics;
45
using System.Windows;
56
using System.Windows.Controls;
67
using System.Windows.Data;
@@ -285,14 +286,14 @@ public bool ChangeView(double? horizontalOffset, double? verticalOffset, float?
285286
if (horizontalOffset.HasValue)
286287
{
287288
ScrollToHorizontalOffset(LastHorizontalLocation);
288-
AnimateScroll(horizontalOffset.Value, Orientation.Vertical, 1);
289+
AnimateScroll(Math.Min(ScrollableWidth, horizontalOffset.Value), Orientation.Horizontal, 1);
289290
LastHorizontalLocation = horizontalOffset.Value;
290291
}
291292

292293
if (verticalOffset.HasValue)
293294
{
294295
ScrollToVerticalOffset(LastVerticalLocation);
295-
AnimateScroll(verticalOffset.Value, Orientation.Vertical, 1);
296+
AnimateScroll(Math.Min(ScrollableHeight, verticalOffset.Value), Orientation.Vertical, 1);
296297
LastVerticalLocation = verticalOffset.Value;
297298
}
298299
}

source/iNKORE.UI.WPF.Modern/Themes/Controls/PipsPager.xaml

Lines changed: 29 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
<ResourceDictionary.MergedDictionaries>
1111
<ResourceDictionary Source="Button.xaml" />
1212
</ResourceDictionary.MergedDictionaries>
13+
14+
<sys:Double x:Key="PipsPagerNavigationButtonScalePressed">0.875</sys:Double>
1315

1416
<Style
1517
x:Key="PipsPagerNavigationButtonBaseStyle"
@@ -55,35 +57,43 @@
5557
<VisualStateGroup x:Name="CommonStates">
5658
<VisualState x:Name="Normal" />
5759
<VisualState x:Name="PointerOver" />
58-
<VisualState x:Name="Pressed">
59-
<Storyboard>
60-
<DoubleAnimationUsingKeyFrames
61-
RepeatBehavior="Forever"
62-
Storyboard.TargetName="ScaleTransform"
63-
Storyboard.TargetProperty="ScaleX">
64-
<DiscreteDoubleKeyFrame KeyTime="0:0:0.016" Value="{DynamicResource PipsPagerNavigationButtonScalePressed}" />
65-
<DiscreteDoubleKeyFrame KeyTime="0:0:30" Value="{DynamicResource PipsPagerNavigationButtonScalePressed}" />
66-
</DoubleAnimationUsingKeyFrames>
67-
<DoubleAnimationUsingKeyFrames
68-
RepeatBehavior="Forever"
69-
Storyboard.TargetName="ScaleTransform"
70-
Storyboard.TargetProperty="ScaleY">
71-
<DiscreteDoubleKeyFrame KeyTime="0:0:0.016" Value="{DynamicResource PipsPagerNavigationButtonScalePressed}" />
72-
<DiscreteDoubleKeyFrame KeyTime="0:0:30" Value="{DynamicResource PipsPagerNavigationButtonScalePressed}" />
73-
</DoubleAnimationUsingKeyFrames>
74-
</Storyboard>
75-
</VisualState>
60+
<VisualState x:Name="Pressed"/>
7661
<VisualState x:Name="Disabled" />
7762
</VisualStateGroup>
7863
</VisualStateManager.VisualStateGroups>
7964
</Border>
8065
<ControlTemplate.Triggers>
8166
<Trigger Property="IsMouseOver" Value="True">
8267
<Setter TargetName="RootGrid" Property="Background" Value="{DynamicResource PipsPagerNavigationButtonBackgroundPointerOver}" />
83-
<Setter TargetName="RootGrid" Property="BorderBrush" Value="{DynamicResource PipsPagerNavigationButtonBorderBrushPressed}" />
68+
<Setter TargetName="RootGrid" Property="BorderBrush" Value="{DynamicResource PipsPagerNavigationButtonBorderBrushPointerOver}" />
8469
<Setter TargetName="Content" Property="Foreground" Value="{DynamicResource PipsPagerNavigationButtonForegroundPointerOver}" />
8570
</Trigger>
8671
<Trigger Property="IsPressed" Value="True">
72+
<Trigger.EnterActions>
73+
<BeginStoryboard x:Name="PipsPagerButtonPressedBeginStoryboard">
74+
<Storyboard>
75+
<DoubleAnimationUsingKeyFrames
76+
RepeatBehavior="Forever"
77+
Storyboard.TargetName="ScaleTransform"
78+
Storyboard.TargetProperty="ScaleX">
79+
<DiscreteDoubleKeyFrame KeyTime="0:0:0.016" Value="{StaticResource PipsPagerNavigationButtonScalePressed}" />
80+
<DiscreteDoubleKeyFrame KeyTime="0:0:30" Value="{StaticResource PipsPagerNavigationButtonScalePressed}" />
81+
</DoubleAnimationUsingKeyFrames>
82+
<DoubleAnimationUsingKeyFrames
83+
RepeatBehavior="Forever"
84+
Storyboard.TargetName="ScaleTransform"
85+
Storyboard.TargetProperty="ScaleY">
86+
<DiscreteDoubleKeyFrame KeyTime="0:0:0.016" Value="{StaticResource PipsPagerNavigationButtonScalePressed}" />
87+
<DiscreteDoubleKeyFrame KeyTime="0:0:30" Value="{StaticResource PipsPagerNavigationButtonScalePressed}" />
88+
</DoubleAnimationUsingKeyFrames>
89+
</Storyboard>
90+
</BeginStoryboard>
91+
</Trigger.EnterActions>
92+
93+
<Trigger.ExitActions>
94+
<StopStoryboard BeginStoryboardName="PipsPagerButtonPressedBeginStoryboard"/>
95+
</Trigger.ExitActions>
96+
8797
<Setter TargetName="RootGrid" Property="Background" Value="{DynamicResource PipsPagerNavigationButtonBackgroundPressed}" />
8898
<Setter TargetName="RootGrid" Property="BorderBrush" Value="{DynamicResource PipsPagerNavigationButtonBorderBrushPressed}" />
8999
<Setter TargetName="Content" Property="Foreground" Value="{DynamicResource PipsPagerNavigationButtonForegroundPressed}" />

0 commit comments

Comments
 (0)