From d5094555638f849e76125fd45ff3017a45d3a411 Mon Sep 17 00:00:00 2001 From: Rosario Pulella Date: Fri, 23 Apr 2021 10:42:13 -0400 Subject: [PATCH 1/3] UIElementExtensions: ClibToBounds defualt UnsetValue -> null --- Microsoft.Toolkit.Uwp.UI/Extensions/UIElementExtensions.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Microsoft.Toolkit.Uwp.UI/Extensions/UIElementExtensions.cs b/Microsoft.Toolkit.Uwp.UI/Extensions/UIElementExtensions.cs index 853f3a77fe4..b1e6b713660 100644 --- a/Microsoft.Toolkit.Uwp.UI/Extensions/UIElementExtensions.cs +++ b/Microsoft.Toolkit.Uwp.UI/Extensions/UIElementExtensions.cs @@ -20,7 +20,7 @@ public static class UIElementExtensions "ClipToBounds", typeof(bool), typeof(UIElementExtensions), - new PropertyMetadata(DependencyProperty.UnsetValue, OnClipToBoundsPropertyChanged)); + new PropertyMetadata(null, OnClipToBoundsPropertyChanged)); /// /// Gets the value of From ba746674b086907f5818ece6f3a2f9677dfecaa5 Mon Sep 17 00:00:00 2001 From: Rosario Pulella Date: Mon, 26 Apr 2021 16:10:52 -0400 Subject: [PATCH 2/3] Return UnsetValue instead of throw exception' As per winui docs https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.dependencyproperty.unsetvalue?view=winrt-19041#remarks --- .../EnumValuesExtension/AnimalToColorConverter.xaml.cs | 3 ++- .../EnumValuesExtension/EnumValuesExtensionCode.bind | 2 +- .../ColorPicker/ColorToColorShadeConverter.cs | 5 +++-- .../ColorPicker/ColorToHexConverter.cs | 3 ++- .../ColorPicker/ContrastBrushConverter.cs | 3 ++- .../Converters/ColorToDisplayNameConverter.cs | 3 ++- Microsoft.Toolkit.Uwp.UI/Converters/TaskResultConverter.cs | 3 ++- 7 files changed, 14 insertions(+), 8 deletions(-) diff --git a/Microsoft.Toolkit.Uwp.SampleApp/SamplePages/EnumValuesExtension/AnimalToColorConverter.xaml.cs b/Microsoft.Toolkit.Uwp.SampleApp/SamplePages/EnumValuesExtension/AnimalToColorConverter.xaml.cs index a681c092e75..119078dca95 100644 --- a/Microsoft.Toolkit.Uwp.SampleApp/SamplePages/EnumValuesExtension/AnimalToColorConverter.xaml.cs +++ b/Microsoft.Toolkit.Uwp.SampleApp/SamplePages/EnumValuesExtension/AnimalToColorConverter.xaml.cs @@ -5,6 +5,7 @@ using System; using Microsoft.Toolkit.Uwp.SampleApp.Enums; using Windows.UI; +using Windows.UI.Xaml; using Windows.UI.Xaml.Data; namespace Microsoft.Toolkit.Uwp.SampleApp.Converters @@ -21,7 +22,7 @@ public object Convert(object value, Type targetType, object parameter, string la Animal.Llama => Colors.Beige, Animal.Parrot => Colors.YellowGreen, Animal.Squirrel => Colors.SaddleBrown, - _ => throw new ArgumentException("Invalid value", nameof(value)) + _ => DependencyProperty.UnsetValue }; } diff --git a/Microsoft.Toolkit.Uwp.SampleApp/SamplePages/EnumValuesExtension/EnumValuesExtensionCode.bind b/Microsoft.Toolkit.Uwp.SampleApp/SamplePages/EnumValuesExtension/EnumValuesExtensionCode.bind index 33f73c51b56..b2e70116824 100644 --- a/Microsoft.Toolkit.Uwp.SampleApp/SamplePages/EnumValuesExtension/EnumValuesExtensionCode.bind +++ b/Microsoft.Toolkit.Uwp.SampleApp/SamplePages/EnumValuesExtension/EnumValuesExtensionCode.bind @@ -20,7 +20,7 @@ public sealed class AnimalToColorConverter : IValueConverter Animal.Bunny => Colors.Green, Animal.Parrot => Colors.YellowGreen, Animal.Squirrel => Colors.SaddleBrown, - _ => throw new ArgumentException("Invalid value", nameof(value)) + _ => DependencyProperty.UnsetValue }; } diff --git a/Microsoft.Toolkit.Uwp.UI.Controls.Input/ColorPicker/ColorToColorShadeConverter.cs b/Microsoft.Toolkit.Uwp.UI.Controls.Input/ColorPicker/ColorToColorShadeConverter.cs index a74e6e4ae54..9779507a8b8 100644 --- a/Microsoft.Toolkit.Uwp.UI.Controls.Input/ColorPicker/ColorToColorShadeConverter.cs +++ b/Microsoft.Toolkit.Uwp.UI.Controls.Input/ColorPicker/ColorToColorShadeConverter.cs @@ -5,6 +5,7 @@ using System; using Microsoft.Toolkit.Uwp.Helpers; using Windows.UI; +using Windows.UI.Xaml; using Windows.UI.Xaml.Data; using Windows.UI.Xaml.Media; @@ -40,7 +41,7 @@ public object Convert( } else { - throw new ArgumentException("Invalid color value provided"); + return DependencyProperty.UnsetValue; } // Get the value component delta @@ -50,7 +51,7 @@ public object Convert( } catch { - throw new ArgumentException("Invalid parameter provided, unable to convert to integer"); + return DependencyProperty.UnsetValue; } // Specially handle minimum (black) and maximum (white) diff --git a/Microsoft.Toolkit.Uwp.UI.Controls.Input/ColorPicker/ColorToHexConverter.cs b/Microsoft.Toolkit.Uwp.UI.Controls.Input/ColorPicker/ColorToHexConverter.cs index b460c8820fa..10099d41d9e 100644 --- a/Microsoft.Toolkit.Uwp.UI.Controls.Input/ColorPicker/ColorToHexConverter.cs +++ b/Microsoft.Toolkit.Uwp.UI.Controls.Input/ColorPicker/ColorToHexConverter.cs @@ -5,6 +5,7 @@ using System; using Microsoft.Toolkit.Uwp.Helpers; using Windows.UI; +using Windows.UI.Xaml; using Windows.UI.Xaml.Data; using Windows.UI.Xaml.Media; @@ -34,7 +35,7 @@ public object Convert( } else { - throw new ArgumentException("Invalid color value provided"); + return DependencyProperty.UnsetValue; } string hexColor = color.ToHex().Replace("#", string.Empty); diff --git a/Microsoft.Toolkit.Uwp.UI.Controls.Input/ColorPicker/ContrastBrushConverter.cs b/Microsoft.Toolkit.Uwp.UI.Controls.Input/ColorPicker/ContrastBrushConverter.cs index abd1dc1dbd7..a011054b520 100644 --- a/Microsoft.Toolkit.Uwp.UI.Controls.Input/ColorPicker/ContrastBrushConverter.cs +++ b/Microsoft.Toolkit.Uwp.UI.Controls.Input/ColorPicker/ContrastBrushConverter.cs @@ -4,6 +4,7 @@ using System; using Windows.UI; +using Windows.UI.Xaml; using Windows.UI.Xaml.Data; using Windows.UI.Xaml.Media; @@ -40,7 +41,7 @@ public object Convert( } else { - throw new ArgumentException("Invalid color value provided"); + return DependencyProperty.UnsetValue; } // Get the default color when transparency is high diff --git a/Microsoft.Toolkit.Uwp.UI/Converters/ColorToDisplayNameConverter.cs b/Microsoft.Toolkit.Uwp.UI/Converters/ColorToDisplayNameConverter.cs index 5aa9a78cefe..d432e7d718d 100644 --- a/Microsoft.Toolkit.Uwp.UI/Converters/ColorToDisplayNameConverter.cs +++ b/Microsoft.Toolkit.Uwp.UI/Converters/ColorToDisplayNameConverter.cs @@ -4,6 +4,7 @@ using System; using Windows.UI; +using Windows.UI.Xaml; using Windows.UI.Xaml.Data; using Windows.UI.Xaml.Media; @@ -33,7 +34,7 @@ public object Convert( } else { - throw new ArgumentException("Invalid color value provided"); + return DependencyProperty.UnsetValue; } return ColorHelper.ToDisplayName(color); diff --git a/Microsoft.Toolkit.Uwp.UI/Converters/TaskResultConverter.cs b/Microsoft.Toolkit.Uwp.UI/Converters/TaskResultConverter.cs index bf5c610a142..3c818a225f1 100644 --- a/Microsoft.Toolkit.Uwp.UI/Converters/TaskResultConverter.cs +++ b/Microsoft.Toolkit.Uwp.UI/Converters/TaskResultConverter.cs @@ -4,6 +4,7 @@ using System; using System.Threading.Tasks; +using Windows.UI.Xaml; using Windows.UI.Xaml.Data; namespace Microsoft.Toolkit.Uwp.UI.Converters @@ -26,7 +27,7 @@ public object Convert(object value, Type targetType, object parameter, string la return task.GetResultOrDefault(); } - return null; + return DependencyProperty.UnsetValue; } /// From b2e97254917e9cb8ae8d7968858eea37a35d8efb Mon Sep 17 00:00:00 2001 From: Rosario Pulella Date: Tue, 27 Apr 2021 12:56:07 -0400 Subject: [PATCH 3/3] Update TaskResultConverter Test to handle UnsetValue case --- .../Converters/Test_TaskResultConverter.cs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/UnitTests/UnitTests.UWP/Converters/Test_TaskResultConverter.cs b/UnitTests/UnitTests.UWP/Converters/Test_TaskResultConverter.cs index 7b122dabcb5..2e79c7268cb 100644 --- a/UnitTests/UnitTests.UWP/Converters/Test_TaskResultConverter.cs +++ b/UnitTests/UnitTests.UWP/Converters/Test_TaskResultConverter.cs @@ -8,6 +8,7 @@ using Microsoft.Toolkit.Uwp.UI.Converters; using Microsoft.VisualStudio.TestTools.UnitTesting; using Microsoft.VisualStudio.TestTools.UnitTesting.AppContainer; +using Windows.UI.Xaml; namespace UnitTests.Converters { @@ -70,12 +71,19 @@ public void Test_TaskResultConverter_Instance_String() [TestCategory("Converters")] [UITestMethod] - public void Test_TaskResultConverter_Instance_Null() + public void Test_TaskResultConverter_Instance_UnsetValue() { var converter = new TaskResultConverter(); - Assert.AreEqual(null, converter.Convert(null, null, null, null)); - Assert.AreEqual(null, converter.Convert("Hello world", null, null, null)); + Assert.AreEqual(DependencyProperty.UnsetValue, converter.Convert(null, null, null, null)); + Assert.AreEqual(DependencyProperty.UnsetValue, converter.Convert("Hello world", null, null, null)); + } + + [TestCategory("Converters")] + [UITestMethod] + public void Test_TaskResultConverter_Instance_Null() + { + var converter = new TaskResultConverter(); var cts = new CancellationTokenSource();