From b39266638beece6ee86848aaaf829a35f0acf553 Mon Sep 17 00:00:00 2001 From: Kai Guo Date: Thu, 29 Aug 2019 15:09:54 -0700 Subject: [PATCH 1/4] Apply CornerRadiusFilterConverter workaround --- dev/CheckBox/CheckBox_themeresources.xaml | 8 +-- dev/ColorPicker/ColorPicker.xaml | 64 +++++++++---------- dev/ColorPicker/ColorSpectrum.xaml | 22 ++++--- dev/Common/CornerRadiusFilterConverter.cpp | 28 +++++++- dev/Common/CornerRadiusFilterConverter.h | 3 + dev/Common/CornerRadiusFilterConverters.idl | 8 ++- .../CornerRadius_themeresources.xaml | 2 + ...MediaTransportControls_themeresources.xaml | 32 +++++----- .../ProgressBar_themeresources.xaml | 8 +-- ...CornerRadiusFilterConverter.properties.cpp | 23 +++++++ .../CornerRadiusFilterConverter.properties.h | 5 ++ .../NavigationView_rs1_themeresources.xaml | 32 +++++----- dev/Pivot/Pivot_themeresources.xaml | 8 +-- dev/ScrollBar/ScrollBar_themeresources.xaml | 15 +++-- dev/Slider/Slider_themeresources.xaml | 32 +++++----- test/TestAppCX/CornerRadiusTestPage.xaml | 18 ++++++ test/TestAppCX/CornerRadiusTestPage.xaml.cpp | 27 ++++++++ test/TestAppCX/CornerRadiusTestPage.xaml.h | 21 ++++++ test/TestAppCX/MainPage.xaml | 1 + test/TestAppCX/MainPage.xaml.cpp | 7 ++ test/TestAppCX/MainPage.xaml.h | 1 + test/TestAppCX/TestAppCX.vcxproj | 21 ++++-- test/TestAppCX/TestAppCX.vcxproj.filters | 1 + 23 files changed, 270 insertions(+), 117 deletions(-) create mode 100644 test/TestAppCX/CornerRadiusTestPage.xaml create mode 100644 test/TestAppCX/CornerRadiusTestPage.xaml.cpp create mode 100644 test/TestAppCX/CornerRadiusTestPage.xaml.h diff --git a/dev/CheckBox/CheckBox_themeresources.xaml b/dev/CheckBox/CheckBox_themeresources.xaml index ef71b79a98..21f899b9b1 100644 --- a/dev/CheckBox/CheckBox_themeresources.xaml +++ b/dev/CheckBox/CheckBox_themeresources.xaml @@ -647,10 +647,10 @@ UseLayoutRounding="False" Height="20" Width="20" - contract7Present:RadiusX="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=CornerRadius.TopLeft}" - contract7Present:RadiusY="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=CornerRadius.BottomRight}" - contract7NotPresent:RadiusX="{Binding Source={ThemeResource ControlCornerRadius}, Path=TopLeft}" - contract7NotPresent:RadiusY="{Binding Source={ThemeResource ControlCornerRadius}, Path=BottomRight}"/> + contract7Present:RadiusX="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7Present:RadiusY="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusX="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusY="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}"/> + contract7Present:RadiusX="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7Present:RadiusY="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusX="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusY="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" /> @@ -266,37 +266,37 @@ + contract7Present:RadiusX="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7Present:RadiusY="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusX="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusY="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}"> + contract7Present:RadiusX="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7Present:RadiusY="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusX="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusY="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" /> + contract7Present:RadiusX="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7Present:RadiusY="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusX="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusY="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" /> + contract7Present:RadiusX="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7Present:RadiusY="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusX="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusY="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" /> + contract7Present:RadiusX="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7Present:RadiusY="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusX="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusY="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}"> @@ -305,19 +305,19 @@ + contract7Present:RadiusX="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7Present:RadiusY="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusX="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusY="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}"> + contract7Present:RadiusX="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7Present:RadiusY="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusX="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusY="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}"> diff --git a/dev/ColorPicker/ColorSpectrum.xaml b/dev/ColorPicker/ColorSpectrum.xaml index dc6ead65a6..d5f6870764 100644 --- a/dev/ColorPicker/ColorSpectrum.xaml +++ b/dev/ColorPicker/ColorSpectrum.xaml @@ -66,13 +66,15 @@ + contract7Present:RadiusX="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7Present:RadiusY="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusX="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusY="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" /> + contract7Present:RadiusX="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7Present:RadiusY="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusX="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusY="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}"/> @@ -86,10 +88,10 @@ + contract7Present:RadiusX="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7Present:RadiusY="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusX="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusY="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" /> diff --git a/dev/Common/CornerRadiusFilterConverter.cpp b/dev/Common/CornerRadiusFilterConverter.cpp index 6f4161ca0d..09bb2426aa 100644 --- a/dev/Common/CornerRadiusFilterConverter.cpp +++ b/dev/Common/CornerRadiusFilterConverter.cpp @@ -27,9 +27,31 @@ winrt::CornerRadius CornerRadiusFilterConverter::Convert(winrt::CornerRadius con result.TopRight = 0; result.BottomRight = 0; break; + case winrt::CornerRadiusFilterKind::TopLeft: + result.TopRight = 0; + result.BottomLeft = 0; + result.BottomRight = 0; + break; + case winrt::CornerRadiusFilterKind::BottomRight: + result.TopLeft = 0; + result.TopRight = 0; + result.BottomLeft = 0; + break; } - return result; + return result; +} + +double CornerRadiusFilterConverter::GetDoubleValue(winrt::CornerRadius const& radius, winrt::CornerRadiusFilterKind const& filterKind) +{ + switch (filterKind) + { + case winrt::CornerRadiusFilterKind::TopLeft: + return radius.TopLeft; + case winrt::CornerRadiusFilterKind::BottomRight: + return radius.BottomRight; + } + return 0; } winrt::IInspectable CornerRadiusFilterConverter::Convert( @@ -38,8 +60,8 @@ winrt::IInspectable CornerRadiusFilterConverter::Convert( winrt::IInspectable const& parameter, winrt::hstring const& language) { - auto result = Convert(unbox_value(value), Filter()); - return box_value(result); + auto cornerRadius = unbox_value(value); + return ReturnAsDouble() ? box_value(GetDoubleValue(cornerRadius, Filter())) : box_value(Convert(cornerRadius, Filter())); } winrt::IInspectable CornerRadiusFilterConverter::ConvertBack( diff --git a/dev/Common/CornerRadiusFilterConverter.h b/dev/Common/CornerRadiusFilterConverter.h index a5d74f1ec7..f5778202a0 100644 --- a/dev/Common/CornerRadiusFilterConverter.h +++ b/dev/Common/CornerRadiusFilterConverter.h @@ -25,4 +25,7 @@ class CornerRadiusFilterConverter : winrt::TypeName const& targetType, winrt::IInspectable const& parameter, winrt::hstring const& language); + +private: + double GetDoubleValue(winrt::CornerRadius const& radius, winrt::CornerRadiusFilterKind const& filterKind); }; diff --git a/dev/Common/CornerRadiusFilterConverters.idl b/dev/Common/CornerRadiusFilterConverters.idl index a6d038c530..986477bbbb 100644 --- a/dev/Common/CornerRadiusFilterConverters.idl +++ b/dev/Common/CornerRadiusFilterConverters.idl @@ -11,7 +11,11 @@ runtimeclass CornerRadiusFilterConverter : Windows.UI.Xaml.DependencyObject, Win [MUX_DEFAULT_VALUE("winrt::CornerRadiusFilterKind::None")] CornerRadiusFilterKind Filter{ get; set; }; + [MUX_DEFAULT_VALUE("false")] + Boolean ReturnAsDouble{ get; set; }; + static Windows.UI.Xaml.DependencyProperty FilterProperty{ get; }; + static Windows.UI.Xaml.DependencyProperty ReturnAsDoubleProperty{ get; }; }; [WUXC_VERSION_MUXONLY] @@ -22,7 +26,9 @@ enum CornerRadiusFilterKind Top, Right, Bottom, - Left + Left, + TopLeft, + BottomRight }; } diff --git a/dev/CommonStyles/CornerRadius_themeresources.xaml b/dev/CommonStyles/CornerRadius_themeresources.xaml index e59407bd5d..97c9c162a6 100644 --- a/dev/CommonStyles/CornerRadius_themeresources.xaml +++ b/dev/CommonStyles/CornerRadius_themeresources.xaml @@ -22,5 +22,7 @@ + + diff --git a/dev/CommonStyles/MediaTransportControls_themeresources.xaml b/dev/CommonStyles/MediaTransportControls_themeresources.xaml index 5c7d5342e8..2c2969f18e 100644 --- a/dev/CommonStyles/MediaTransportControls_themeresources.xaml +++ b/dev/CommonStyles/MediaTransportControls_themeresources.xaml @@ -240,19 +240,19 @@ Height="{ThemeResource SliderTrackThemeHeight}" Grid.Row="1" Grid.ColumnSpan="3" - contract7Present:RadiusX="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=CornerRadius.TopLeft}" - contract7Present:RadiusY="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=CornerRadius.BottomRight}" - contract7NotPresent:RadiusX="{Binding Source={ThemeResource ControlCornerRadius}, Path=TopLeft}" - contract7NotPresent:RadiusY="{Binding Source={ThemeResource ControlCornerRadius}, Path=BottomRight}" /> + contract7Present:RadiusX="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7Present:RadiusY="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusX="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusY="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" /> + contract7Present:RadiusX="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7Present:RadiusY="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusX="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusY="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" /> @@ -289,19 +289,19 @@ Width="{ThemeResource SliderTrackThemeHeight}" Grid.Column="1" Grid.RowSpan="3" - contract7Present:RadiusX="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=CornerRadius.TopLeft}" - contract7Present:RadiusY="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=CornerRadius.BottomRight}" - contract7NotPresent:RadiusX="{Binding Source={ThemeResource ControlCornerRadius}, Path=TopLeft}" - contract7NotPresent:RadiusY="{Binding Source={ThemeResource ControlCornerRadius}, Path=BottomRight}" /> + contract7Present:RadiusX="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7Present:RadiusY="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusX="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusY="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" /> + contract7Present:RadiusX="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7Present:RadiusY="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusX="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusY="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" /> diff --git a/dev/CommonStyles/ProgressBar_themeresources.xaml b/dev/CommonStyles/ProgressBar_themeresources.xaml index 2f8fc784d8..606d3f4874 100644 --- a/dev/CommonStyles/ProgressBar_themeresources.xaml +++ b/dev/CommonStyles/ProgressBar_themeresources.xaml @@ -255,10 +255,10 @@ Margin="{TemplateBinding Padding}" Fill="{TemplateBinding Foreground}" HorizontalAlignment="Left" - contract7Present:RadiusX="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=CornerRadius.TopLeft}" - contract7Present:RadiusY="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=CornerRadius.BottomRight}" - contract7NotPresent:RadiusX="{Binding Source={ThemeResource ControlCornerRadius}, Path=TopLeft}" - contract7NotPresent:RadiusY="{Binding Source={ThemeResource ControlCornerRadius}, Path=BottomRight}" /> + contract7Present:RadiusX="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7Present:RadiusY="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusX="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusY="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" /> diff --git a/dev/Generated/CornerRadiusFilterConverter.properties.cpp b/dev/Generated/CornerRadiusFilterConverter.properties.cpp index 50e9bd0248..d1e9de3d49 100644 --- a/dev/Generated/CornerRadiusFilterConverter.properties.cpp +++ b/dev/Generated/CornerRadiusFilterConverter.properties.cpp @@ -9,6 +9,7 @@ CppWinRTActivatableClassWithDPFactory(CornerRadiusFilterConverter) GlobalDependencyProperty CornerRadiusFilterConverterProperties::s_FilterProperty{ nullptr }; +GlobalDependencyProperty CornerRadiusFilterConverterProperties::s_ReturnAsDoubleProperty{ nullptr }; CornerRadiusFilterConverterProperties::CornerRadiusFilterConverterProperties() { @@ -28,11 +29,23 @@ void CornerRadiusFilterConverterProperties::EnsureProperties() ValueHelper::BoxValueIfNecessary(winrt::CornerRadiusFilterKind::None), nullptr); } + if (!s_ReturnAsDoubleProperty) + { + s_ReturnAsDoubleProperty = + InitializeDependencyProperty( + L"ReturnAsDouble", + winrt::name_of(), + winrt::name_of(), + false /* isAttached */, + ValueHelper::BoxValueIfNecessary(false), + nullptr); + } } void CornerRadiusFilterConverterProperties::ClearProperties() { s_FilterProperty = nullptr; + s_ReturnAsDoubleProperty = nullptr; } void CornerRadiusFilterConverterProperties::Filter(winrt::CornerRadiusFilterKind const& value) @@ -44,3 +57,13 @@ winrt::CornerRadiusFilterKind CornerRadiusFilterConverterProperties::Filter() { return ValueHelper::CastOrUnbox(static_cast(this)->GetValue(s_FilterProperty)); } + +void CornerRadiusFilterConverterProperties::ReturnAsDouble(bool value) +{ + static_cast(this)->SetValue(s_ReturnAsDoubleProperty, ValueHelper::BoxValueIfNecessary(value)); +} + +bool CornerRadiusFilterConverterProperties::ReturnAsDouble() +{ + return ValueHelper::CastOrUnbox(static_cast(this)->GetValue(s_ReturnAsDoubleProperty)); +} diff --git a/dev/Generated/CornerRadiusFilterConverter.properties.h b/dev/Generated/CornerRadiusFilterConverter.properties.h index 47ce6ebef2..857fabb54e 100644 --- a/dev/Generated/CornerRadiusFilterConverter.properties.h +++ b/dev/Generated/CornerRadiusFilterConverter.properties.h @@ -12,9 +12,14 @@ class CornerRadiusFilterConverterProperties void Filter(winrt::CornerRadiusFilterKind const& value); winrt::CornerRadiusFilterKind Filter(); + void ReturnAsDouble(bool value); + bool ReturnAsDouble(); + static winrt::DependencyProperty FilterProperty() { return s_FilterProperty; } + static winrt::DependencyProperty ReturnAsDoubleProperty() { return s_ReturnAsDoubleProperty; } static GlobalDependencyProperty s_FilterProperty; + static GlobalDependencyProperty s_ReturnAsDoubleProperty; static void EnsureProperties(); static void ClearProperties(); diff --git a/dev/NavigationView/NavigationView_rs1_themeresources.xaml b/dev/NavigationView/NavigationView_rs1_themeresources.xaml index 7dfb353af8..8d2ec17003 100644 --- a/dev/NavigationView/NavigationView_rs1_themeresources.xaml +++ b/dev/NavigationView/NavigationView_rs1_themeresources.xaml @@ -578,10 +578,10 @@ Height="24" Fill="{ThemeResource NavigationViewSelectionIndicatorForeground}" Opacity="0.0" - contract7Present:RadiusX="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=CornerRadius.TopLeft}" - contract7Present:RadiusY="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=CornerRadius.BottomRight}" - contract7NotPresent:RadiusX="{Binding Source={ThemeResource ControlCornerRadius}, Path=TopLeft}" - contract7NotPresent:RadiusY="{Binding Source={ThemeResource ControlCornerRadius}, Path=BottomRight}"/> + contract7Present:RadiusX="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7Present:RadiusY="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusX="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusY="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}"/> + contract7Present:RadiusX="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7Present:RadiusY="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusX="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusY="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}"/> + contract7Present:RadiusX="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7Present:RadiusY="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusX="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusY="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" /> @@ -1049,10 +1049,10 @@ Height="2" Fill="{ThemeResource NavigationViewSelectionIndicatorForeground}" Opacity="0" - contract7Present:RadiusX="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=CornerRadius.TopLeft}" - contract7Present:RadiusY="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=CornerRadius.BottomRight}" - contract7NotPresent:RadiusX="{Binding Source={ThemeResource ControlCornerRadius}, Path=TopLeft}" - contract7NotPresent:RadiusY="{Binding Source={ThemeResource ControlCornerRadius}, Path=BottomRight}"/> + contract7Present:RadiusX="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7Present:RadiusY="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusX="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusY="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}"/> diff --git a/dev/Pivot/Pivot_themeresources.xaml b/dev/Pivot/Pivot_themeresources.xaml index 44dd678a0b..aee749bb2a 100644 --- a/dev/Pivot/Pivot_themeresources.xaml +++ b/dev/Pivot/Pivot_themeresources.xaml @@ -619,10 +619,10 @@ + contract7Present:RadiusX="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7Present:RadiusY="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusX="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusY="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" /> diff --git a/dev/ScrollBar/ScrollBar_themeresources.xaml b/dev/ScrollBar/ScrollBar_themeresources.xaml index 32d3293b33..65c8256e57 100644 --- a/dev/ScrollBar/ScrollBar_themeresources.xaml +++ b/dev/ScrollBar/ScrollBar_themeresources.xaml @@ -3,7 +3,8 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:maps="using:Windows.UI.Xaml.Controls.Maps" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" - xmlns:contract7Present="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractPresent(Windows.Foundation.UniversalApiContract,7)"> + xmlns:contract7Present="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractPresent(Windows.Foundation.UniversalApiContract,7)" + xmlns:contract7NotPresent="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractNotPresent(Windows.Foundation.UniversalApiContract,7)"> @@ -417,8 +418,10 @@ + contract7Present:RadiusX="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7Present:RadiusY="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusX="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusY="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}"> @@ -450,8 +453,10 @@ + contract7Present:RadiusX="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7Present:RadiusY="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusX="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusY="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}"> diff --git a/dev/Slider/Slider_themeresources.xaml b/dev/Slider/Slider_themeresources.xaml index 2513d47a91..345858744c 100644 --- a/dev/Slider/Slider_themeresources.xaml +++ b/dev/Slider/Slider_themeresources.xaml @@ -374,15 +374,15 @@ Height="{ThemeResource SliderTrackThemeHeight}" Grid.Row="1" Grid.ColumnSpan="3" - contract7Present:RadiusX="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=CornerRadius.TopLeft}" - contract7Present:RadiusY="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=CornerRadius.BottomRight}" - contract7NotPresent:RadiusX="{Binding Source={ThemeResource ControlCornerRadius}, Path=TopLeft}" - contract7NotPresent:RadiusY="{Binding Source={ThemeResource ControlCornerRadius}, Path=BottomRight}" /> + contract7Present:RadiusX="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7Present:RadiusY="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusX="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusY="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" /> + contract7Present:RadiusX="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7Present:RadiusY="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusX="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusY="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" /> + contract7Present:RadiusX="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7Present:RadiusY="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusX="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusY="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" /> + contract7Present:RadiusX="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7Present:RadiusY="{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusX="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource TopLeftCornerRadiusDoubleValueConverter}}" + contract7NotPresent:RadiusY="{Binding Source={ThemeResource ControlCornerRadius}, Converter={StaticResource BottomRightCornerRadiusDoubleValueConverter}}" /> + + + + + + + + diff --git a/test/TestAppCX/CornerRadiusTestPage.xaml.cpp b/test/TestAppCX/CornerRadiusTestPage.xaml.cpp new file mode 100644 index 0000000000..452c9a67a3 --- /dev/null +++ b/test/TestAppCX/CornerRadiusTestPage.xaml.cpp @@ -0,0 +1,27 @@ +// +// CornerRadiusTestPage.xaml.cpp +// Implementation of the CornerRadiusTestPage class +// + +#include "pch.h" +#include "CornerRadiusTestPage.xaml.h" + +using namespace TestAppCX; + +using namespace Platform; +using namespace Windows::Foundation; +using namespace Windows::Foundation::Collections; +using namespace Windows::UI::Xaml; +using namespace Windows::UI::Xaml::Controls; +using namespace Windows::UI::Xaml::Controls::Primitives; +using namespace Windows::UI::Xaml::Data; +using namespace Windows::UI::Xaml::Input; +using namespace Windows::UI::Xaml::Media; +using namespace Windows::UI::Xaml::Navigation; + +// The Blank Page item template is documented at https://go.microsoft.com/fwlink/?LinkId=234238 + +CornerRadiusTestPage::CornerRadiusTestPage() +{ + InitializeComponent(); +} diff --git a/test/TestAppCX/CornerRadiusTestPage.xaml.h b/test/TestAppCX/CornerRadiusTestPage.xaml.h new file mode 100644 index 0000000000..7522094592 --- /dev/null +++ b/test/TestAppCX/CornerRadiusTestPage.xaml.h @@ -0,0 +1,21 @@ +// +// CornerRadiusTestPage.xaml.h +// Declaration of the CornerRadiusTestPage class +// + +#pragma once + +#include "CornerRadiusTestPage.g.h" + +namespace TestAppCX +{ + /// + /// An empty page that can be used on its own or navigated to within a Frame. + /// + [Windows::Foundation::Metadata::WebHostHidden] + public ref class CornerRadiusTestPage sealed + { + public: + CornerRadiusTestPage(); + }; +} diff --git a/test/TestAppCX/MainPage.xaml b/test/TestAppCX/MainPage.xaml index 73a796c3be..2efa2ef894 100644 --- a/test/TestAppCX/MainPage.xaml +++ b/test/TestAppCX/MainPage.xaml @@ -13,6 +13,7 @@