Skip to content

Commit 515eaea

Browse files
committed
Merge branch 'circle-wipeout' of https://github.com/mgnslndh/MaterialDesignInXamlToolkit into mgnslndh-circle-wipeout
2 parents ae24275 + f1b9069 commit 515eaea

File tree

6 files changed

+97
-6
lines changed

6 files changed

+97
-6
lines changed

MainDemo.Wpf/TransitionsDemo/TransitionsDemoHome.xaml

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
<Grid.RowDefinitions>
1212
<RowDefinition Height="Auto" />
1313
<RowDefinition Height="Auto" />
14+
<RowDefinition Height="256" />
1415
</Grid.RowDefinitions>
1516
<TextBlock>Transitions Demo</TextBlock>
1617

@@ -47,13 +48,31 @@
4748
<local:Slide5_TransitioningContent />
4849

4950
<local:Slide6_MVVM />
50-
51+
5152
<local:Slide7_Master />
5253

5354
<local:Slide8_Details />
5455

5556
</materialDesign:Transitioner>
5657

58+
<Grid Grid.Row="2">
59+
<Grid.ColumnDefinitions>
60+
<ColumnDefinition Width="Auto"/>
61+
<ColumnDefinition/>
62+
</Grid.ColumnDefinitions>
63+
<materialDesign:Transitioner Name="BackgroundTransitioner" Grid.Column="1" Margin="6" SelectedIndex="1" DefaultTransitionOrigin="{x:Static materialDesign:TransitionOrigins.TopLeft}">
64+
<Border Background="#009688"/>
65+
<materialDesign:TransitionerSlide TransitionOrigin="{x:Static materialDesign:TransitionOrigins.BottomRight}">
66+
<materialDesign:TransitionerSlide.BackwardWipe>
67+
<materialDesign:CircleWipe/>
68+
</materialDesign:TransitionerSlide.BackwardWipe>
69+
<Border Background="#E64A19"/>
70+
</materialDesign:TransitionerSlide>
71+
</materialDesign:Transitioner>
72+
<ToggleButton Name="BackgroundToggleButton" Grid.Column="0" Margin="6" Click="BackgroundToggleButton_Checked"/>
73+
<TextBlock Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center" Style="{StaticResource MaterialDesignDisplay3TextBlock}" Foreground="{StaticResource PrimaryHueDarkForegroundBrush}" Opacity="0.86">Material Design In XAML Toolkit</TextBlock>
74+
</Grid>
75+
5776
</Grid>
5877

5978
</UserControl>

MainDemo.Wpf/TransitionsDemo/TransitionsDemoHome.xaml.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,17 @@ public TransitionsDemoHome()
2424
{
2525
InitializeComponent();
2626
}
27+
28+
private void BackgroundToggleButton_Checked(object sender, RoutedEventArgs e)
29+
{
30+
if((bool)BackgroundToggleButton.IsChecked)
31+
{
32+
BackgroundTransitioner.SelectedIndex = 0;
33+
}
34+
else
35+
{
36+
BackgroundTransitioner.SelectedIndex = 1;
37+
}
38+
}
2739
}
2840
}

MaterialDesignThemes.Wpf/MaterialDesignThemes.Wpf.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -372,6 +372,7 @@
372372
<Compile Include="Transitions\TransitionerSlideState.cs" />
373373
<Compile Include="Transitions\TransitioningContent.cs" />
374374
<Compile Include="Transitions\TransitioningContentBase.cs" />
375+
<Compile Include="Transitions\TransitionOrigins.cs" />
375376
<Compile Include="TreeHelper.cs" />
376377
<Compile Include="Underline.cs" />
377378
<Compile Include="ValidationAssist.cs" />
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using System.Threading.Tasks;
6+
using System.Windows;
7+
8+
namespace MaterialDesignThemes.Wpf.Transitions
9+
{
10+
public static class TransitionOrigins
11+
{
12+
public static readonly Point TopLeft = new Point(0, 0);
13+
public static readonly Point TopRight = new Point(1, 0);
14+
15+
public static readonly Point BottomLeft = new Point(0, 1);
16+
public static readonly Point BottomRight = new Point(1, 1);
17+
18+
public static readonly Point Center = new Point(0.5, 0.5);
19+
20+
public static readonly Point MiddleLeft = new Point(0, 0.5);
21+
public static readonly Point MiddleRight = new Point(1, 0.5);
22+
23+
public static readonly Point TopMiddle = new Point(0.5, 0);
24+
public static readonly Point BottomMiddle = new Point(0.5, 1);
25+
}
26+
}

MaterialDesignThemes.Wpf/Transitions/Transitioner.cs

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,22 @@ static Transitioner()
4242

4343
public static readonly DependencyProperty AutoApplyTransitionOriginsProperty = DependencyProperty.Register(
4444
"AutoApplyTransitionOrigins", typeof (bool), typeof (Transitioner), new PropertyMetadata(default(bool)));
45-
45+
4646
public bool AutoApplyTransitionOrigins
4747
{
4848
get { return (bool) GetValue(AutoApplyTransitionOriginsProperty); }
4949
set { SetValue(AutoApplyTransitionOriginsProperty, value); }
5050
}
5151

52+
public static readonly DependencyProperty DefaultTransitionOriginProperty = DependencyProperty.Register(
53+
"DefaultTransitionOrigin", typeof(Point), typeof(Transitioner), new PropertyMetadata(new Point(0.5, 0.5)));
54+
55+
public Point DefaultTransitionOrigin
56+
{
57+
get { return (Point)GetValue(DefaultTransitionOriginProperty); }
58+
set { SetValue(DefaultTransitionOriginProperty, value); }
59+
}
60+
5261
public Transitioner()
5362
{
5463
CommandBindings.Add(new CommandBinding(MoveNextCommand, MoveNextHandler));
@@ -189,12 +198,12 @@ private void ActivateFrame(int selectedIndex, int unselectedIndex)
189198
if (oldSlide != null && newSlide != null)
190199
{
191200
var wipe = selectedIndex > unselectedIndex ? oldSlide.ForwardWipe : oldSlide.BackwardWipe;
192-
if (wipe != null)
193-
wipe.Wipe(oldSlide, newSlide, _nextTransitionOrigin ?? new Point(.5, .5), this);
201+
if (wipe != null)
202+
wipe.Wipe(oldSlide, newSlide, GetTransitionOrigin(newSlide), this);
194203
else
195204
{
196-
DoStack(newSlide, oldSlide);
197-
oldSlide.Opacity = 0;
205+
DoStack(newSlide, oldSlide);
206+
oldSlide.Opacity = 0;
198207
}
199208
}
200209
else if (oldSlide != null || newSlide != null)
@@ -209,6 +218,21 @@ private void ActivateFrame(int selectedIndex, int unselectedIndex)
209218
_nextTransitionOrigin = null;
210219
}
211220

221+
private Point GetTransitionOrigin(TransitionerSlide slide)
222+
{
223+
if(_nextTransitionOrigin != null)
224+
{
225+
return _nextTransitionOrigin.Value;
226+
}
227+
228+
if(slide.ReadLocalValue(TransitionerSlide.TransitionOriginProperty) != DependencyProperty.UnsetValue)
229+
{
230+
return slide.TransitionOrigin;
231+
}
232+
233+
return DefaultTransitionOrigin;
234+
}
235+
212236
void IZIndexController.Stack(params TransitionerSlide[] highestToLowest)
213237
{
214238
DoStack(highestToLowest);

MaterialDesignThemes.Wpf/Transitions/TransitionerSlide.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,15 @@ static TransitionerSlide()
1818
DefaultStyleKeyProperty.OverrideMetadata(typeof(TransitionerSlide), new FrameworkPropertyMetadata(typeof(TransitionerSlide)));
1919
}
2020

21+
public static readonly DependencyProperty TransitionOriginProperty = DependencyProperty.Register(
22+
"TransitionOrigin", typeof(Point), typeof(Transitioner), new PropertyMetadata(new Point(0.5,0.5)));
23+
24+
public Point TransitionOrigin
25+
{
26+
get { return (Point)GetValue(TransitionOriginProperty); }
27+
set { SetValue(TransitionOriginProperty, value); }
28+
}
29+
2130
public static RoutedEvent InTransitionFinished =
2231
EventManager.RegisterRoutedEvent("InTransitionFinished", RoutingStrategy.Bubble, typeof (RoutedEventHandler),
2332
typeof (TransitionerSlide));

0 commit comments

Comments
 (0)