Skip to content

Commit e6d22fe

Browse files
dhilmathyKeboo
authored andcommitted
Added SelectedTimeChanged event for TimePicker control (#1059)
1 parent bd6dc7d commit e6d22fe

File tree

3 files changed

+37
-3
lines changed

3 files changed

+37
-3
lines changed

MainDemo.Wpf/Pickers.xaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363
materialDesign:HintAssist.Hint="Custom hint" />
6464
</smtx:XamlDisplay>
6565
<smtx:XamlDisplay Key="pickers_7" Grid.Row="1" Grid.Column="2" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="0 16 0 0">
66-
<materialDesign:TimePicker Is24Hours="True" x:Name="PresetTimePicker" Width="100" />
66+
<materialDesign:TimePicker Is24Hours="True" x:Name="PresetTimePicker" Width="100" SelectedTimeChanged="PresetTimePicker_SelectedTimeChanged"/>
6767
</smtx:XamlDisplay>
6868
<smtx:XamlDisplay Key="pickers_8" Grid.Row="1" Grid.Column="3" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="0 16 0 0">
6969
<materialDesign:TimePicker

MainDemo.Wpf/Pickers.xaml.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using MaterialDesignThemes.Wpf;
2+
using System.Diagnostics;
23
using System.Globalization;
34
using System.Linq;
45
using System.Windows.Controls;
@@ -74,5 +75,13 @@ public void ClockDialogClosingEventHandler(object sender, DialogClosingEventArgs
7475
if (Equals(eventArgs.Parameter, "1"))
7576
((PickersViewModel)DataContext).Time = Clock.Time;
7677
}
78+
79+
private void PresetTimePicker_SelectedTimeChanged(object sender, System.Windows.RoutedPropertyChangedEventArgs<System.DateTime?> e)
80+
{
81+
var oldValue = e.OldValue.HasValue ? e.OldValue.Value.ToLongTimeString() : "NULL";
82+
var newValue = e.NewValue.HasValue ? e.NewValue.Value.ToLongTimeString() : "NULL";
83+
84+
Debug.WriteLine($"PresentTimePicker's SelectedTime changed from {oldValue} to {newValue}");
85+
}
7786
}
7887
}

MaterialDesignThemes.Wpf/TimePicker.cs

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,15 +74,40 @@ private static void SelectedTimePropertyChangedCallback(DependencyObject depende
7474
timePicker.SetCurrentValue(TextProperty, timePicker.DateTimeToString(timePicker.SelectedTime));
7575
timePicker._isManuallyMutatingText = false;
7676
timePicker._lastValidTime = timePicker.SelectedTime;
77+
78+
OnSelectedTimeChanged(timePicker, dependencyPropertyChangedEventArgs);
7779
}
7880

7981
public DateTime? SelectedTime
8082
{
8183
get { return (DateTime?) GetValue(SelectedTimeProperty); }
8284
set { SetValue(SelectedTimeProperty, value); }
83-
}
85+
}
86+
87+
public static readonly RoutedEvent SelectedTimeChangedEvent =
88+
EventManager.RegisterRoutedEvent(
89+
nameof(SelectedTime),
90+
RoutingStrategy.Bubble,
91+
typeof(RoutedPropertyChangedEventHandler<DateTime?>),
92+
typeof(TimePicker));
93+
94+
public event RoutedPropertyChangedEventHandler<DateTime?> SelectedTimeChanged
95+
{
96+
add => AddHandler(SelectedTimeChangedEvent, value);
97+
remove => RemoveHandler(SelectedTimeChangedEvent, value);
98+
}
99+
100+
private static void OnSelectedTimeChanged(
101+
DependencyObject d, DependencyPropertyChangedEventArgs e)
102+
{
103+
var instance = (TimePicker)d;
104+
var args = new RoutedPropertyChangedEventArgs<DateTime?>(
105+
(DateTime?)e.OldValue,
106+
(DateTime?)e.NewValue) { RoutedEvent = SelectedTimeChangedEvent };
107+
instance.RaiseEvent(args);
108+
}
84109

85-
public static readonly DependencyProperty SelectedTimeFormatProperty = DependencyProperty.Register(
110+
public static readonly DependencyProperty SelectedTimeFormatProperty = DependencyProperty.Register(
86111
nameof(SelectedTimeFormat), typeof (DatePickerFormat), typeof (TimePicker), new PropertyMetadata(DatePickerFormat.Short));
87112

88113
public DatePickerFormat SelectedTimeFormat

0 commit comments

Comments
 (0)