Skip to content

Commit a127a6b

Browse files
committed
disable clock anims option. fixes #137
1 parent 76b4853 commit a127a6b

File tree

2 files changed

+186
-124
lines changed

2 files changed

+186
-124
lines changed

MaterialDesignThemes.Wpf/Clock.cs

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,18 @@ public enum ClockDisplayAutomation
3535
[TemplatePart(Name = MinutesCanvasPartName, Type = typeof(Canvas))]
3636
[TemplatePart(Name = MinuteReadOutPartName, Type = typeof(TextBlock))]
3737
[TemplatePart(Name = HourReadOutPartName, Type = typeof(TextBlock))]
38+
[TemplateVisualState(GroupName = "DisplayModeStates", Name = HoursVisualStateName)]
39+
[TemplateVisualState(GroupName = "DisplayModeStates", Name = MinutesVisualStateName)]
3840
public class Clock : Control
3941
{
4042
public const string HoursCanvasPartName = "PART_HoursCanvas";
4143
public const string MinutesCanvasPartName = "PART_MinutesCanvas";
4244
public const string MinuteReadOutPartName = "PART_MinuteReadOut";
4345
public const string HourReadOutPartName = "PART_HourReadOut";
4446

47+
public const string HoursVisualStateName = "Hours";
48+
public const string MinutesVisualStateName = "Minutes";
49+
4550
private Point _centreCanvas = new Point(0, 0);
4651
private Point _currentStartPosition = new Point(0, 0);
4752
private TextBlock _hourReadOutPartName;
@@ -131,9 +136,14 @@ public bool Is24Hours
131136

132137

133138
public static readonly DependencyProperty DisplayModeProperty = DependencyProperty.Register(
134-
"DisplayMode", typeof (ClockDisplayMode), typeof (Clock), new PropertyMetadata(ClockDisplayMode.Hours));
139+
"DisplayMode", typeof (ClockDisplayMode), typeof (Clock), new FrameworkPropertyMetadata(ClockDisplayMode.Hours, DisplayModePropertyChangedCallback));
140+
141+
private static void DisplayModePropertyChangedCallback(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs)
142+
{
143+
((Clock)dependencyObject).GotoVisualState(!TransitionAssist.GetDisableTransitions(dependencyObject));
144+
}
135145

136-
public ClockDisplayMode DisplayMode
146+
public ClockDisplayMode DisplayMode
137147
{
138148
get { return (ClockDisplayMode) GetValue(DisplayModeProperty); }
139149
set { SetValue(DisplayModeProperty, value); }
@@ -235,8 +245,16 @@ public override void OnApplyTemplate()
235245
_minuteReadOutPartName.PreviewMouseLeftButtonDown += MinuteReadOutPartNameOnPreviewMouseLeftButtonDown;
236246

237247
base.OnApplyTemplate();
248+
249+
GotoVisualState(false);
238250
}
239251

252+
private void GotoVisualState(bool useTransitions)
253+
{
254+
VisualStateManager.GoToState(this,
255+
DisplayMode == ClockDisplayMode.Minutes ? MinutesVisualStateName : HoursVisualStateName, useTransitions);
256+
}
257+
240258
private void GenerateButtons()
241259
{
242260
var hoursCanvas = GetTemplateChild(HoursCanvasPartName) as Canvas;

0 commit comments

Comments
 (0)