diff options
Diffstat (limited to 'Xamarin.Forms.Platform.WinRT/TimePickerRenderer.cs')
-rw-r--r-- | Xamarin.Forms.Platform.WinRT/TimePickerRenderer.cs | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/Xamarin.Forms.Platform.WinRT/TimePickerRenderer.cs b/Xamarin.Forms.Platform.WinRT/TimePickerRenderer.cs index 3aa5fdca..8c878b29 100644 --- a/Xamarin.Forms.Platform.WinRT/TimePickerRenderer.cs +++ b/Xamarin.Forms.Platform.WinRT/TimePickerRenderer.cs @@ -1,6 +1,8 @@ using System; using System.ComponentModel; +using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; +using Windows.UI.Xaml.Media; #if WINDOWS_UWP @@ -12,6 +14,8 @@ namespace Xamarin.Forms.Platform.WinRT { public class TimePickerRenderer : ViewRenderer<TimePicker, FormsTimePicker>, IWrapperAware { + Brush _defaultBrush; + public void NotifyWrapped() { if (Control != null) @@ -26,6 +30,7 @@ namespace Xamarin.Forms.Platform.WinRT { Control.ForceInvalidate -= PickerOnForceInvalidate; Control.TimeChanged -= OnControlTimeChanged; + Control.Loaded -= ControlOnLoaded; } base.Dispose(disposing); @@ -33,19 +38,29 @@ namespace Xamarin.Forms.Platform.WinRT protected override void OnElementChanged(ElementChangedEventArgs<TimePicker> e) { + base.OnElementChanged(e); + if (e.NewElement != null) { if (Control == null) { var picker = new FormsTimePicker(); - picker.TimeChanged += OnControlTimeChanged; SetNativeControl(picker); + + Control.TimeChanged += OnControlTimeChanged; + Control.Loaded += ControlOnLoaded; } UpdateTime(); } + } - base.OnElementChanged(e); + void ControlOnLoaded(object sender, RoutedEventArgs routedEventArgs) + { + // The defaults from the control template won't be available + // right away; we have to wait until after the template has been applied + _defaultBrush = Control.Foreground; + UpdateTextColor(); } protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) @@ -54,6 +69,9 @@ namespace Xamarin.Forms.Platform.WinRT if (e.PropertyName == TimePicker.TimeProperty.PropertyName) UpdateTime(); + + if (e.PropertyName == TimePicker.TextColorProperty.PropertyName) + UpdateTextColor(); } void OnControlTimeChanged(object sender, TimePickerValueChangedEventArgs e) @@ -71,5 +89,11 @@ namespace Xamarin.Forms.Platform.WinRT { Control.Time = Element.Time; } + + void UpdateTextColor() + { + Color color = Element.TextColor; + Control.Foreground = color.IsDefault ? (_defaultBrush ?? color.ToBrush()) : color.ToBrush(); + } } }
\ No newline at end of file |