diff --git a/src/Compatibility/Core/src/Android/Renderers/TimePickerRenderer.cs b/src/Compatibility/Core/src/Android/Renderers/TimePickerRenderer.cs
index 83203a21169d..8e4b05ea7ba6 100644
--- a/src/Compatibility/Core/src/Android/Renderers/TimePickerRenderer.cs
+++ b/src/Compatibility/Core/src/Android/Renderers/TimePickerRenderer.cs
@@ -140,7 +140,7 @@ void IPickerRenderer.OnClick()
TimePicker view = Element;
ElementController.SetValueFromRenderer(VisualElement.IsFocusedPropertyKey, true);
- _dialog = CreateTimePickerDialog(view.Time.Hours, view.Time.Minutes);
+ _dialog = CreateTimePickerDialog(view.Time?.Hours ?? 0, view.Time?.Minutes ?? 0);
_dialog.Show();
}
@@ -159,17 +159,17 @@ void OnCancelButtonClicked(object sender, EventArgs e)
}
[PortHandler]
- void SetTime(TimeSpan time)
+ void SetTime(TimeSpan? time)
{
if (String.IsNullOrEmpty(Element.Format))
{
var timeFormat = "t";
- EditText.Text = DateTime.Today.Add(time).ToString(timeFormat);
+ EditText.Text = DateTime.Today.Add(time ?? TimeSpan.Zero).ToString(timeFormat);
}
else
{
var timeFormat = Element.Format;
- EditText.Text = DateTime.Today.Add(time).ToString(timeFormat);
+ EditText.Text = DateTime.Today.Add(time ?? TimeSpan.Zero).ToString(timeFormat);
}
Element.InvalidateMeasureNonVirtual(Internals.InvalidationTrigger.MeasureChanged);
diff --git a/src/Compatibility/Core/src/Windows/TimePickerRenderer.cs b/src/Compatibility/Core/src/Windows/TimePickerRenderer.cs
index ded027021259..4d9139a7e415 100644
--- a/src/Compatibility/Core/src/Windows/TimePickerRenderer.cs
+++ b/src/Compatibility/Core/src/Windows/TimePickerRenderer.cs
@@ -173,7 +173,7 @@ void UpdateFont()
[PortHandler]
void UpdateTime()
{
- Control.Time = Element.Time;
+ Control.Time = Element.Time ?? TimeSpan.Zero;
if (Element.Format?.Contains('H', StringComparison.Ordinal) == true)
{
Control.ClockIdentifier = "24HourClock";
diff --git a/src/Compatibility/Core/src/iOS/Renderers/TimePickerRenderer.cs b/src/Compatibility/Core/src/iOS/Renderers/TimePickerRenderer.cs
index fe997dc64d2c..d6ac8915442e 100644
--- a/src/Compatibility/Core/src/iOS/Renderers/TimePickerRenderer.cs
+++ b/src/Compatibility/Core/src/iOS/Renderers/TimePickerRenderer.cs
@@ -217,7 +217,7 @@ void UpdateCharacterSpacing()
[PortHandler]
void UpdateTime()
{
- _picker.Date = new DateTime(1, 1, 1).Add(Element.Time).ToNSDate();
+ _picker.Date = new DateTime(1, 1, 1).Add(Element.Time ?? TimeSpan.Zero).ToNSDate();
string iOSLocale = NSLocale.CurrentLocale.CountryCode;
var cultureInfos = CultureInfo.GetCultures(CultureTypes.AllCultures)
.Where(c => c.Name.EndsWith("-" + iOSLocale)).FirstOrDefault();
@@ -228,12 +228,12 @@ void UpdateTime()
{
string timeformat = cultureInfos.DateTimeFormat.ShortTimePattern;
NSLocale locale = new NSLocale(cultureInfos.TwoLetterISOLanguageName);
- Control.Text = DateTime.Today.Add(Element.Time).ToString(timeformat, cultureInfos);
+ Control.Text = DateTime.Today.Add(Element.Time ?? TimeSpan.Zero).ToString(timeformat, cultureInfos);
_picker.Locale = locale;
}
else
{
- Control.Text = DateTime.Today.Add(Element.Time).ToString(Element.Format, cultureInfos);
+ Control.Text = DateTime.Today.Add(Element.Time ?? TimeSpan.Zero).ToString(Element.Format, cultureInfos);
}
if (Element.Format?.Contains('H', StringComparison.Ordinal) == true)
diff --git a/src/Controls/samples/Controls.Sample/Pages/Controls/TimePickerPage.xaml b/src/Controls/samples/Controls.Sample/Pages/Controls/TimePickerPage.xaml
index 13f7d25fc708..26c81fd2f840 100644
--- a/src/Controls/samples/Controls.Sample/Pages/Controls/TimePickerPage.xaml
+++ b/src/Controls/samples/Controls.Sample/Pages/Controls/TimePickerPage.xaml
@@ -87,6 +87,14 @@
Margin="6, 0"
Style="{StaticResource IsFocusedTextStyle}"/>
-
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Controls/samples/Controls.Sample/Pages/Controls/TimePickerPage.xaml.cs b/src/Controls/samples/Controls.Sample/Pages/Controls/TimePickerPage.xaml.cs
index 322fe99f5903..179022c8a110 100644
--- a/src/Controls/samples/Controls.Sample/Pages/Controls/TimePickerPage.xaml.cs
+++ b/src/Controls/samples/Controls.Sample/Pages/Controls/TimePickerPage.xaml.cs
@@ -13,12 +13,12 @@ public TimePickerPage()
UpdateTimePickerBackground();
}
- void OnUpdateBackgroundButtonClicked(object sender, System.EventArgs e)
+ void OnUpdateBackgroundButtonClicked(object sender, EventArgs e)
{
UpdateTimePickerBackground();
}
- void OnClearBackgroundButtonClicked(object sender, System.EventArgs e)
+ void OnClearBackgroundButtonClicked(object sender, EventArgs e)
{
BackgroundTimePicker.Background = null;
}
@@ -39,5 +39,15 @@ void UpdateTimePickerBackground()
}
};
}
+
+ void SetTimePickerToNull(object sender, EventArgs e)
+ {
+ NullTimePicker.Time = null;
+ }
+
+ void SetTimePickerToNow(object sender, EventArgs e)
+ {
+ NullTimePicker.Time = DateTime.Now.TimeOfDay;
+ }
}
}
\ No newline at end of file
diff --git a/src/Controls/src/Core/PublicAPI/net-android/PublicAPI.Unshipped.txt b/src/Controls/src/Core/PublicAPI/net-android/PublicAPI.Unshipped.txt
index 1319bd663045..032b6469a32e 100644
--- a/src/Controls/src/Core/PublicAPI/net-android/PublicAPI.Unshipped.txt
+++ b/src/Controls/src/Core/PublicAPI/net-android/PublicAPI.Unshipped.txt
@@ -221,4 +221,6 @@ Microsoft.Maui.Controls.SearchBar.ReturnType.set -> void
override Microsoft.Maui.Controls.ListStringTypeConverter.CanConvertFrom(System.ComponentModel.ITypeDescriptorContext? context, System.Type! sourceType) -> bool
override Microsoft.Maui.Controls.ListStringTypeConverter.CanConvertTo(System.ComponentModel.ITypeDescriptorContext? context, System.Type? destinationType) -> bool
override Microsoft.Maui.Controls.ListStringTypeConverter.ConvertFrom(System.ComponentModel.ITypeDescriptorContext? context, System.Globalization.CultureInfo? culture, object! value) -> object?
-override Microsoft.Maui.Controls.ListStringTypeConverter.ConvertTo(System.ComponentModel.ITypeDescriptorContext? context, System.Globalization.CultureInfo? culture, object? value, System.Type! destinationType) -> object?
\ No newline at end of file
+override Microsoft.Maui.Controls.ListStringTypeConverter.ConvertTo(System.ComponentModel.ITypeDescriptorContext? context, System.Globalization.CultureInfo? culture, object? value, System.Type! destinationType) -> object?
+*REMOVED*Microsoft.Maui.Controls.TimePicker.Time.get -> System.TimeSpan
+Microsoft.Maui.Controls.TimePicker.Time.get -> System.TimeSpan?
diff --git a/src/Controls/src/Core/PublicAPI/net-ios/PublicAPI.Unshipped.txt b/src/Controls/src/Core/PublicAPI/net-ios/PublicAPI.Unshipped.txt
index a5cea6dbf069..8c66150c74bc 100644
--- a/src/Controls/src/Core/PublicAPI/net-ios/PublicAPI.Unshipped.txt
+++ b/src/Controls/src/Core/PublicAPI/net-ios/PublicAPI.Unshipped.txt
@@ -424,3 +424,5 @@ override Microsoft.Maui.Controls.ListStringTypeConverter.ConvertFrom(System.Comp
override Microsoft.Maui.Controls.ListStringTypeConverter.ConvertTo(System.ComponentModel.ITypeDescriptorContext? context, System.Globalization.CultureInfo? culture, object? value, System.Type! destinationType) -> object?
*REMOVED*static Microsoft.Maui.Controls.Platform.FormattedStringExtensions.ToNSAttributedString(this Microsoft.Maui.Controls.FormattedString! formattedString, Microsoft.Maui.IFontManager! fontManager, double defaultLineHeight = 0, Microsoft.Maui.TextAlignment defaultHorizontalAlignment = Microsoft.Maui.TextAlignment.Start, Microsoft.Maui.Font? defaultFont = null, Microsoft.Maui.Graphics.Color? defaultColor = null, Microsoft.Maui.TextTransform defaultTextTransform = Microsoft.Maui.TextTransform.Default) -> Foundation.NSAttributedString!
*REMOVED*static Microsoft.Maui.Controls.Platform.FormattedStringExtensions.ToNSAttributedString(this Microsoft.Maui.Controls.Span! span, Microsoft.Maui.IFontManager! fontManager, double defaultLineHeight = 0, Microsoft.Maui.TextAlignment defaultHorizontalAlignment = Microsoft.Maui.TextAlignment.Start, Microsoft.Maui.Font? defaultFont = null, Microsoft.Maui.Graphics.Color? defaultColor = null, Microsoft.Maui.TextTransform defaultTextTransform = Microsoft.Maui.TextTransform.Default) -> Foundation.NSAttributedString!
+*REMOVED*Microsoft.Maui.Controls.TimePicker.Time.get -> System.TimeSpan
+Microsoft.Maui.Controls.TimePicker.Time.get -> System.TimeSpan?
diff --git a/src/Controls/src/Core/PublicAPI/net-maccatalyst/PublicAPI.Unshipped.txt b/src/Controls/src/Core/PublicAPI/net-maccatalyst/PublicAPI.Unshipped.txt
index e8340e236e02..5b8e4a654db5 100644
--- a/src/Controls/src/Core/PublicAPI/net-maccatalyst/PublicAPI.Unshipped.txt
+++ b/src/Controls/src/Core/PublicAPI/net-maccatalyst/PublicAPI.Unshipped.txt
@@ -423,4 +423,6 @@ override Microsoft.Maui.Controls.ListStringTypeConverter.CanConvertTo(System.Com
override Microsoft.Maui.Controls.ListStringTypeConverter.ConvertFrom(System.ComponentModel.ITypeDescriptorContext? context, System.Globalization.CultureInfo? culture, object! value) -> object?
override Microsoft.Maui.Controls.ListStringTypeConverter.ConvertTo(System.ComponentModel.ITypeDescriptorContext? context, System.Globalization.CultureInfo? culture, object? value, System.Type! destinationType) -> object?
*REMOVED*static Microsoft.Maui.Controls.Platform.FormattedStringExtensions.ToNSAttributedString(this Microsoft.Maui.Controls.FormattedString! formattedString, Microsoft.Maui.IFontManager! fontManager, double defaultLineHeight = 0, Microsoft.Maui.TextAlignment defaultHorizontalAlignment = Microsoft.Maui.TextAlignment.Start, Microsoft.Maui.Font? defaultFont = null, Microsoft.Maui.Graphics.Color? defaultColor = null, Microsoft.Maui.TextTransform defaultTextTransform = Microsoft.Maui.TextTransform.Default) -> Foundation.NSAttributedString!
-*REMOVED*static Microsoft.Maui.Controls.Platform.FormattedStringExtensions.ToNSAttributedString(this Microsoft.Maui.Controls.Span! span, Microsoft.Maui.IFontManager! fontManager, double defaultLineHeight = 0, Microsoft.Maui.TextAlignment defaultHorizontalAlignment = Microsoft.Maui.TextAlignment.Start, Microsoft.Maui.Font? defaultFont = null, Microsoft.Maui.Graphics.Color? defaultColor = null, Microsoft.Maui.TextTransform defaultTextTransform = Microsoft.Maui.TextTransform.Default) -> Foundation.NSAttributedString!
\ No newline at end of file
+*REMOVED*static Microsoft.Maui.Controls.Platform.FormattedStringExtensions.ToNSAttributedString(this Microsoft.Maui.Controls.Span! span, Microsoft.Maui.IFontManager! fontManager, double defaultLineHeight = 0, Microsoft.Maui.TextAlignment defaultHorizontalAlignment = Microsoft.Maui.TextAlignment.Start, Microsoft.Maui.Font? defaultFont = null, Microsoft.Maui.Graphics.Color? defaultColor = null, Microsoft.Maui.TextTransform defaultTextTransform = Microsoft.Maui.TextTransform.Default) -> Foundation.NSAttributedString!
+*REMOVED*Microsoft.Maui.Controls.TimePicker.Time.get -> System.TimeSpan
+Microsoft.Maui.Controls.TimePicker.Time.get -> System.TimeSpan?
diff --git a/src/Controls/src/Core/PublicAPI/net-tizen/PublicAPI.Unshipped.txt b/src/Controls/src/Core/PublicAPI/net-tizen/PublicAPI.Unshipped.txt
index 70a3b13b8fdf..b8cc6cb0a38f 100644
--- a/src/Controls/src/Core/PublicAPI/net-tizen/PublicAPI.Unshipped.txt
+++ b/src/Controls/src/Core/PublicAPI/net-tizen/PublicAPI.Unshipped.txt
@@ -216,4 +216,6 @@ Microsoft.Maui.Controls.SearchBar.ReturnType.set -> void
override Microsoft.Maui.Controls.ListStringTypeConverter.CanConvertFrom(System.ComponentModel.ITypeDescriptorContext? context, System.Type! sourceType) -> bool
override Microsoft.Maui.Controls.ListStringTypeConverter.CanConvertTo(System.ComponentModel.ITypeDescriptorContext? context, System.Type? destinationType) -> bool
override Microsoft.Maui.Controls.ListStringTypeConverter.ConvertFrom(System.ComponentModel.ITypeDescriptorContext? context, System.Globalization.CultureInfo? culture, object! value) -> object?
-override Microsoft.Maui.Controls.ListStringTypeConverter.ConvertTo(System.ComponentModel.ITypeDescriptorContext? context, System.Globalization.CultureInfo? culture, object? value, System.Type! destinationType) -> object?
\ No newline at end of file
+override Microsoft.Maui.Controls.ListStringTypeConverter.ConvertTo(System.ComponentModel.ITypeDescriptorContext? context, System.Globalization.CultureInfo? culture, object? value, System.Type! destinationType) -> object?
+*REMOVED*Microsoft.Maui.Controls.TimePicker.Time.get -> System.TimeSpan
+Microsoft.Maui.Controls.TimePicker.Time.get -> System.TimeSpan?
diff --git a/src/Controls/src/Core/PublicAPI/net-windows/PublicAPI.Unshipped.txt b/src/Controls/src/Core/PublicAPI/net-windows/PublicAPI.Unshipped.txt
index b7edb3062e7f..9ef42960f9a9 100644
--- a/src/Controls/src/Core/PublicAPI/net-windows/PublicAPI.Unshipped.txt
+++ b/src/Controls/src/Core/PublicAPI/net-windows/PublicAPI.Unshipped.txt
@@ -224,4 +224,6 @@ override Microsoft.Maui.Controls.ListStringTypeConverter.CanConvertTo(System.Com
override Microsoft.Maui.Controls.ListStringTypeConverter.ConvertFrom(System.ComponentModel.ITypeDescriptorContext? context, System.Globalization.CultureInfo? culture, object! value) -> object?
override Microsoft.Maui.Controls.ListStringTypeConverter.ConvertTo(System.ComponentModel.ITypeDescriptorContext? context, System.Globalization.CultureInfo? culture, object? value, System.Type! destinationType) -> object?
*REMOVED*static Microsoft.Maui.Controls.Platform.FormattedStringExtensions.ToRunAndColorsTuples(this Microsoft.Maui.Controls.FormattedString! formattedString, Microsoft.Maui.IFontManager! fontManager, double defaultLineHeight = 0, Microsoft.Maui.TextAlignment defaultHorizontalAlignment = Microsoft.Maui.TextAlignment.Start, Microsoft.Maui.Font? defaultFont = null, Microsoft.Maui.Graphics.Color? defaultColor = null, Microsoft.Maui.TextTransform defaultTextTransform = Microsoft.Maui.TextTransform.Default) -> System.Collections.Generic.IEnumerable!>!
-*REMOVED*static Microsoft.Maui.Controls.Platform.FormattedStringExtensions.UpdateInlines(this Microsoft.UI.Xaml.Controls.TextBlock! textBlock, Microsoft.Maui.IFontManager! fontManager, Microsoft.Maui.Controls.FormattedString! formattedString, double defaultLineHeight = 0, Microsoft.Maui.TextAlignment defaultHorizontalAlignment = Microsoft.Maui.TextAlignment.Start, Microsoft.Maui.Font? defaultFont = null, Microsoft.Maui.Graphics.Color? defaultColor = null, Microsoft.Maui.TextTransform defaultTextTransform = Microsoft.Maui.TextTransform.Default) -> void
\ No newline at end of file
+*REMOVED*static Microsoft.Maui.Controls.Platform.FormattedStringExtensions.UpdateInlines(this Microsoft.UI.Xaml.Controls.TextBlock! textBlock, Microsoft.Maui.IFontManager! fontManager, Microsoft.Maui.Controls.FormattedString! formattedString, double defaultLineHeight = 0, Microsoft.Maui.TextAlignment defaultHorizontalAlignment = Microsoft.Maui.TextAlignment.Start, Microsoft.Maui.Font? defaultFont = null, Microsoft.Maui.Graphics.Color? defaultColor = null, Microsoft.Maui.TextTransform defaultTextTransform = Microsoft.Maui.TextTransform.Default) -> void
+*REMOVED*Microsoft.Maui.Controls.TimePicker.Time.get -> System.TimeSpan
+Microsoft.Maui.Controls.TimePicker.Time.get -> System.TimeSpan?
diff --git a/src/Controls/src/Core/PublicAPI/net/PublicAPI.Unshipped.txt b/src/Controls/src/Core/PublicAPI/net/PublicAPI.Unshipped.txt
index efdc429d3c75..2e79dcf232bd 100644
--- a/src/Controls/src/Core/PublicAPI/net/PublicAPI.Unshipped.txt
+++ b/src/Controls/src/Core/PublicAPI/net/PublicAPI.Unshipped.txt
@@ -215,4 +215,6 @@ Microsoft.Maui.Controls.SearchBar.ReturnType.set -> void
override Microsoft.Maui.Controls.ListStringTypeConverter.CanConvertFrom(System.ComponentModel.ITypeDescriptorContext? context, System.Type! sourceType) -> bool
override Microsoft.Maui.Controls.ListStringTypeConverter.CanConvertTo(System.ComponentModel.ITypeDescriptorContext? context, System.Type? destinationType) -> bool
override Microsoft.Maui.Controls.ListStringTypeConverter.ConvertFrom(System.ComponentModel.ITypeDescriptorContext? context, System.Globalization.CultureInfo? culture, object! value) -> object?
-override Microsoft.Maui.Controls.ListStringTypeConverter.ConvertTo(System.ComponentModel.ITypeDescriptorContext? context, System.Globalization.CultureInfo? culture, object? value, System.Type! destinationType) -> object?
\ No newline at end of file
+override Microsoft.Maui.Controls.ListStringTypeConverter.ConvertTo(System.ComponentModel.ITypeDescriptorContext? context, System.Globalization.CultureInfo? culture, object? value, System.Type! destinationType) -> object?
+*REMOVED*Microsoft.Maui.Controls.TimePicker.Time.get -> System.TimeSpan
+Microsoft.Maui.Controls.TimePicker.Time.get -> System.TimeSpan?
diff --git a/src/Controls/src/Core/PublicAPI/netstandard/PublicAPI.Unshipped.txt b/src/Controls/src/Core/PublicAPI/netstandard/PublicAPI.Unshipped.txt
index 9383125db97c..f9c1ba845497 100644
--- a/src/Controls/src/Core/PublicAPI/netstandard/PublicAPI.Unshipped.txt
+++ b/src/Controls/src/Core/PublicAPI/netstandard/PublicAPI.Unshipped.txt
@@ -214,4 +214,6 @@ Microsoft.Maui.Controls.SearchBar.ReturnType.set -> void
override Microsoft.Maui.Controls.ListStringTypeConverter.CanConvertFrom(System.ComponentModel.ITypeDescriptorContext? context, System.Type! sourceType) -> bool
override Microsoft.Maui.Controls.ListStringTypeConverter.CanConvertTo(System.ComponentModel.ITypeDescriptorContext? context, System.Type? destinationType) -> bool
override Microsoft.Maui.Controls.ListStringTypeConverter.ConvertFrom(System.ComponentModel.ITypeDescriptorContext? context, System.Globalization.CultureInfo? culture, object! value) -> object?
-override Microsoft.Maui.Controls.ListStringTypeConverter.ConvertTo(System.ComponentModel.ITypeDescriptorContext? context, System.Globalization.CultureInfo? culture, object? value, System.Type! destinationType) -> object?
\ No newline at end of file
+override Microsoft.Maui.Controls.ListStringTypeConverter.ConvertTo(System.ComponentModel.ITypeDescriptorContext? context, System.Globalization.CultureInfo? culture, object? value, System.Type! destinationType) -> object?
+*REMOVED*Microsoft.Maui.Controls.TimePicker.Time.get -> System.TimeSpan
+Microsoft.Maui.Controls.TimePicker.Time.get -> System.TimeSpan?
diff --git a/src/Controls/src/Core/TimePicker/TimePicker.Mapper.cs b/src/Controls/src/Core/TimePicker/TimePicker.Mapper.cs
index 5fa874db652f..6f6592039c46 100644
--- a/src/Controls/src/Core/TimePicker/TimePicker.Mapper.cs
+++ b/src/Controls/src/Core/TimePicker/TimePicker.Mapper.cs
@@ -1,5 +1,4 @@
-#nullable disable
-using System;
+using System;
using Microsoft.Maui.Controls.Compatibility;
namespace Microsoft.Maui.Controls
diff --git a/src/Controls/src/Core/TimePicker/TimePicker.cs b/src/Controls/src/Core/TimePicker/TimePicker.cs
index f0ae684c9c62..7e50dcef69c1 100644
--- a/src/Controls/src/Core/TimePicker/TimePicker.cs
+++ b/src/Controls/src/Core/TimePicker/TimePicker.cs
@@ -20,11 +20,11 @@ public partial class TimePicker : View, IFontElement, ITextElement, IElementConf
public static readonly BindableProperty CharacterSpacingProperty = TextElement.CharacterSpacingProperty;
/// Bindable property for .
- public static readonly BindableProperty TimeProperty = BindableProperty.Create(nameof(Time), typeof(TimeSpan), typeof(TimePicker), new TimeSpan(0), BindingMode.TwoWay,
+ public static readonly BindableProperty TimeProperty = BindableProperty.Create(nameof(Time), typeof(TimeSpan?), typeof(TimePicker), new TimeSpan(0), BindingMode.TwoWay,
validateValue: (bindable, value) =>
{
- var time = (TimeSpan)value;
- return time.TotalHours < 24 && time.TotalMilliseconds >= 0;
+ var time = (TimeSpan?)value;
+ return time is null || (time?.TotalHours < 24 && time?.TotalMilliseconds >= 0);
},
propertyChanged: TimePropertyChanged);
@@ -70,9 +70,9 @@ public double CharacterSpacing
}
///
- public TimeSpan Time
+ public TimeSpan? Time
{
- get { return (TimeSpan)GetValue(TimeProperty); }
+ get { return (TimeSpan?)GetValue(TimeProperty); }
set { SetValue(TimeProperty, value); }
}
@@ -157,7 +157,7 @@ void ITextElement.OnTextTransformChanged(TextTransform oldValue, TextTransform n
Font ITextStyle.Font => this.ToFont();
- TimeSpan ITimePicker.Time
+ TimeSpan? ITimePicker.Time
{
get => Time;
set => SetValue(TimeProperty, value, SetterSpecificity.FromHandler);
diff --git a/src/Controls/tests/Core.UnitTests/NotifiedPropertiesTests.cs b/src/Controls/tests/Core.UnitTests/NotifiedPropertiesTests.cs
index de7567b47211..f00ca20ab6fd 100644
--- a/src/Controls/tests/Core.UnitTests/NotifiedPropertiesTests.cs
+++ b/src/Controls/tests/Core.UnitTests/NotifiedPropertiesTests.cs
@@ -145,7 +145,7 @@ public override string DebugName
new PropertyTestCase ("Detail", v => v.Detail, (v, o) => v.Detail = o, () => null, "Foo"),
new PropertyTestCase ("TextColor", v => v.TextColor, (v, o) => v.TextColor = o, () => null, new Color (0, 1, 0)),
new PropertyTestCase ("DetailColor", v => v.DetailColor, (v, o) => v.DetailColor = o, () => null, new Color (0, 1, 0)),
- new PropertyTestCase ("Time", v => v.Time, (v, o) => v.Time = o, () => default(TimeSpan), new TimeSpan (8, 0, 0)),
+ new PropertyTestCase ("Time", v => v.Time, (v, o) => v.Time = o, () => default(TimeSpan), new TimeSpan (8, 0, 0)),
new PropertyTestCase ("Format", v => v.Format, (v, o) => v.Format = o, () => "t", "T"),
new PropertyTestCase ("View", v => v.View, (v, o) => v.View = o, () => null, new View ()),
new PropertyTestCase ("Source", v => v.Source, (v, o) => v.Source = o, () => null, new UrlWebViewSource { Url = "Foo" }),
diff --git a/src/Controls/tests/Core.UnitTests/TimePickerUnitTest.cs b/src/Controls/tests/Core.UnitTests/TimePickerUnitTest.cs
index 8b899b1b9b6f..df2d0d331e8a 100644
--- a/src/Controls/tests/Core.UnitTests/TimePickerUnitTest.cs
+++ b/src/Controls/tests/Core.UnitTests/TimePickerUnitTest.cs
@@ -40,6 +40,17 @@ public void ZeroTimeIsValid()
};
}
+ [Fact]
+ public void NullTimeIsValid()
+ {
+ var timePicker = new TimePicker
+ {
+ Time = null
+ };
+
+ Assert.Null(timePicker.Time);
+ }
+
[Fact]
public void TestTimeSelected()
{
@@ -57,7 +68,9 @@ public void TestTimeSelected()
public static object[] TimeSpans = {
new object[] { new TimeSpan (), new TimeSpan(9, 0, 0) },
new object[] { new TimeSpan(9, 0, 0), new TimeSpan(17, 30, 0) },
- new object[] { new TimeSpan(23, 59, 59), new TimeSpan(0, 0, 0) }
+ new object[] { new TimeSpan(23, 59, 59), new TimeSpan(0, 0, 0) },
+ new object[] { new TimeSpan(23, 59, 59), null },
+ new object[] { null, new TimeSpan(23, 59, 59) },
};
public static IEnumerable