Skip to content

Commit 46ede43

Browse files
committed
Fix possible exception
"Exception = 'BadgeScaleTransform' name cannot be found in the name scope of 'System.Windows.Controls.ControlTemplate'."
1 parent 2bfbe15 commit 46ede43

File tree

2 files changed

+54
-18
lines changed

2 files changed

+54
-18
lines changed

MaterialDesignThemes.Wpf/Badged.cs

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,23 @@
1-
using System.Windows;
1+
using System;
2+
using System.Diagnostics;
3+
using System.Windows;
4+
using System.Windows.Media.Animation;
25
using ControlzEx;
36

47
namespace MaterialDesignThemes.Wpf
58
{
69
[TemplatePart(Name = BadgeContainerPartName, Type = typeof(UIElement))]
710
public class Badged : BadgedEx
811
{
12+
public static readonly DependencyProperty BadgeChangedStoryboardProperty = DependencyProperty.Register(
13+
"BadgeChangedStoryboard", typeof(Storyboard), typeof(Badged), new PropertyMetadata(default(Storyboard)));
14+
15+
public Storyboard BadgeChangedStoryboard
16+
{
17+
get { return (Storyboard)this.GetValue(BadgeChangedStoryboardProperty); }
18+
set { this.SetValue(BadgeChangedStoryboardProperty, value); }
19+
}
20+
921
static Badged()
1022
{
1123
DefaultStyleKeyProperty.OverrideMetadata(typeof(Badged), new FrameworkPropertyMetadata(typeof(Badged)));
@@ -19,5 +31,34 @@ public ColorZoneMode BadgeColorZoneMode
1931
get { return (ColorZoneMode) GetValue(BadgeColorZoneModeProperty); }
2032
set { SetValue(BadgeColorZoneModeProperty, value); }
2133
}
34+
35+
public override void OnApplyTemplate()
36+
{
37+
this.BadgeChanged -= this.OnBadgeChanged;
38+
39+
base.OnApplyTemplate();
40+
41+
this.BadgeChanged += this.OnBadgeChanged;
42+
}
43+
44+
private void OnBadgeChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
45+
{
46+
var sb = this.BadgeChangedStoryboard;
47+
if (this._badgeContainer != null && sb != null)
48+
{
49+
try
50+
{
51+
this._badgeContainer.BeginStoryboard(sb);
52+
}
53+
catch (Exception exc)
54+
{
55+
Trace.WriteLine("Error during Storyboard execution, exception will be rethrown.");
56+
Trace.WriteLine($"{exc.Message} ({exc.GetType().FullName})");
57+
Trace.WriteLine(exc.StackTrace);
58+
59+
throw;
60+
}
61+
}
62+
}
2263
}
2364
}

MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.Badged.xaml

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,24 @@
44

55
<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
66
<SineEase EasingMode="EaseOut" x:Key="BadgeEase" />
7+
<Storyboard x:Key="BadgeChangedStoryboard">
8+
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleX)">
9+
<EasingDoubleKeyFrame KeyTime="0" Value="1.4" />
10+
<EasingDoubleKeyFrame EasingFunction="{StaticResource BadgeEase}" KeyTime="0:0:0.3" Value="1" />
11+
</DoubleAnimationUsingKeyFrames>
12+
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleY)">
13+
<EasingDoubleKeyFrame KeyTime="0" Value="1.4" />
14+
<EasingDoubleKeyFrame EasingFunction="{StaticResource BadgeEase}" KeyTime="0:0:0.3" Value="1" />
15+
</DoubleAnimationUsingKeyFrames>
16+
</Storyboard>
717

818
<Style TargetType="{x:Type wpf:Badged}">
919
<Setter Property="IsTabStop" Value="False" />
1020
<Setter Property="HorizontalAlignment" Value="Left" />
1121
<Setter Property="VerticalAlignment" Value="Top" />
1222
<Setter Property="BadgeColorZoneMode" Value="PrimaryLight" />
1323
<Setter Property="BadgePlacementMode" Value="TopRight" />
24+
<Setter Property="BadgeChangedStoryboard" Value="{StaticResource BadgeChangedStoryboard}" />
1425
<Setter Property="Template">
1526
<Setter.Value>
1627
<ControlTemplate TargetType="{x:Type wpf:Badged}">
@@ -42,7 +53,7 @@
4253
</Style>
4354
</Border.Resources>
4455
<Border.RenderTransform>
45-
<ScaleTransform x:Name="BadgeScaleTransform" ScaleX="1" ScaleY="1" />
56+
<ScaleTransform ScaleX="1" ScaleY="1" />
4657
</Border.RenderTransform>
4758
<ContentControl Foreground="{TemplateBinding BadgeForeground}"
4859
IsTabStop="False"
@@ -53,22 +64,6 @@
5364
</Border>
5465
</Grid>
5566
<ControlTemplate.Triggers>
56-
<EventTrigger RoutedEvent="BadgeChanged">
57-
<EventTrigger.Actions>
58-
<BeginStoryboard>
59-
<Storyboard>
60-
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="BadgeScaleTransform" Storyboard.TargetProperty="ScaleX">
61-
<EasingDoubleKeyFrame Value="1.4" KeyTime="0" />
62-
<EasingDoubleKeyFrame Value="1" KeyTime="0:0:0.3" EasingFunction="{StaticResource BadgeEase}" />
63-
</DoubleAnimationUsingKeyFrames>
64-
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="BadgeScaleTransform" Storyboard.TargetProperty="ScaleY">
65-
<EasingDoubleKeyFrame Value="1.4" KeyTime="0" />
66-
<EasingDoubleKeyFrame Value="1" KeyTime="0:0:0.3" EasingFunction="{StaticResource BadgeEase}" />
67-
</DoubleAnimationUsingKeyFrames>
68-
</Storyboard>
69-
</BeginStoryboard>
70-
</EventTrigger.Actions>
71-
</EventTrigger>
7267
<Trigger Property="BadgePlacementMode" Value="TopLeft">
7368
<Setter TargetName="PART_BadgeContainer" Property="HorizontalAlignment" Value="Left" />
7469
<Setter TargetName="PART_BadgeContainer" Property="VerticalAlignment" Value="Top" />

0 commit comments

Comments
 (0)