Skip to content

Commit 41d16b7

Browse files
authored
Merge pull request #660 from punker76/BadgedNameScopeBug
Fix possible Badged name scope bug
2 parents 5f428f2 + c3e5a41 commit 41d16b7

File tree

7 files changed

+67
-31
lines changed

7 files changed

+67
-31
lines changed

.paket/paket.exe

112 KB
Binary file not shown.

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" />

paket-files/ControlzEx/ControlzEx/src/ControlzEx/BadgedEx.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public enum BadgePlacementMode
2020
public class BadgedEx : ContentControl
2121
{
2222
public const string BadgeContainerPartName = "PART_BadgeContainer";
23-
private FrameworkElement _badgeContainer;
23+
protected FrameworkElement _badgeContainer;
2424

2525
public static readonly DependencyProperty BadgeProperty = DependencyProperty.Register(
2626
"Badge", typeof(object), typeof(BadgedEx), new FrameworkPropertyMetadata(default(object), FrameworkPropertyMetadataOptions.AffectsArrange, OnBadgeChanged));
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
c0ebf5b9937c52bb4b0012e3430aae6397e400db
1+
e687c6ac4279c4e513b7ef9a75622411350db874

paket.dependencies

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ framework >= net45
33

44
nuget MahApps.Metro
55
nuget Dragablz 0.0.3.165
6-
nuget Moq 4.5.10 framework: = net452
6+
nuget Moq 4.7.1 framework: = net452
77
nuget NSubstitute 1.10.0 framework: = net452
88
nuget RhinoMocks 3.6.1 framework: = net452
99
nuget Shouldly 2.8.0 framework: = net452
@@ -14,7 +14,7 @@ nuget xunit.core 2.1.0 framework: = net452
1414
nuget xunit.extensibility.core 2.1.0 framework: = net452
1515
nuget xunit.extensibility.execution 2.1.0 framework: = net452
1616

17-
github ControlzEx/ControlzEx:1f4d66092fb101f3ece1dc88b36c20d815f88b2b src/ControlzEx/PopupEx.cs
18-
github ControlzEx/ControlzEx:1f4d66092fb101f3ece1dc88b36c20d815f88b2b src/ControlzEx/PackIconBase.cs
19-
github ControlzEx/ControlzEx:1f4d66092fb101f3ece1dc88b36c20d815f88b2b src/ControlzEx/BadgedEx.cs
17+
github ControlzEx/ControlzEx:e687c6ac4279c4e513b7ef9a75622411350db874 src/ControlzEx/PopupEx.cs
18+
github ControlzEx/ControlzEx:e687c6ac4279c4e513b7ef9a75622411350db874 src/ControlzEx/PackIconBase.cs
19+
github ControlzEx/ControlzEx:e687c6ac4279c4e513b7ef9a75622411350db874 src/ControlzEx/BadgedEx.cs
2020
github samueldjack/VirtualCollection:e63d891c252c2ac1a3ebb26dddb9a3d89effe3f2 VirtualCollection/VirtualCollection/VirtualizingWrapPanel.cs

paket.lock

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
FRAMEWORK: >= NET45
22
NUGET
33
remote: https://www.nuget.org/api/v2
4-
Castle.Core (3.3.3) - framework: net452
4+
Castle.Core (4.0) - framework: net452
55
Dragablz (0.0.3.165)
6-
MahApps.Metro (1.4.1)
7-
Moq (4.5.10) - framework: net452
8-
Castle.Core (>= 3.3.3)
6+
MahApps.Metro (1.4.3)
7+
Moq (4.7.1) - framework: net452
8+
Castle.Core (>= 4.0)
99
NSubstitute (1.10) - framework: net452
1010
RhinoMocks (3.6.1) - framework: net452
1111
Shouldly (2.8) - framework: net452
@@ -23,8 +23,8 @@ NUGET
2323
xunit.extensibility.core (2.1)
2424
GITHUB
2525
remote: ControlzEx/ControlzEx
26-
src/ControlzEx/BadgedEx.cs (c0ebf5b9937c52bb4b0012e3430aae6397e400db)
27-
src/ControlzEx/PackIconBase.cs (c0ebf5b9937c52bb4b0012e3430aae6397e400db)
28-
src/ControlzEx/PopupEx.cs (c0ebf5b9937c52bb4b0012e3430aae6397e400db)
26+
src/ControlzEx/BadgedEx.cs (e687c6ac4279c4e513b7ef9a75622411350db874)
27+
src/ControlzEx/PackIconBase.cs (e687c6ac4279c4e513b7ef9a75622411350db874)
28+
src/ControlzEx/PopupEx.cs (e687c6ac4279c4e513b7ef9a75622411350db874)
2929
remote: samueldjack/VirtualCollection
3030
VirtualCollection/VirtualCollection/VirtualizingWrapPanel.cs (e63d891c252c2ac1a3ebb26dddb9a3d89effe3f2)

0 commit comments

Comments
 (0)