diff options
author | Paul DiPietro <pauldipietro@users.noreply.github.com> | 2016-12-05 03:43:24 -0700 |
---|---|---|
committer | Rui Marinho <me@ruimarinho.net> | 2016-12-05 10:43:24 +0000 |
commit | 3692786c3a0f9ba01ffe9516caa624a018ac885a (patch) | |
tree | 788d13326eb8cd5d9a41330e68ecf1cec6bd39c3 | |
parent | 17280b260f07b12a23bb4af2679183b39beb8fd6 (diff) | |
download | xamarin-forms-3692786c3a0f9ba01ffe9516caa624a018ac885a.tar.gz xamarin-forms-3692786c3a0f9ba01ffe9516caa624a018ac885a.tar.bz2 xamarin-forms-3692786c3a0f9ba01ffe9516caa624a018ac885a.zip |
[WinRT/UWP] Adjust margin for centered Slider (#604)
3 files changed, 70 insertions, 0 deletions
diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla29110.cs b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla29110.cs new file mode 100644 index 00000000..e31cc7a5 --- /dev/null +++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla29110.cs @@ -0,0 +1,49 @@ +using Xamarin.Forms.CustomAttributes; +using Xamarin.Forms.Internals; + +#if UITEST +using Xamarin.UITest; +using NUnit.Framework; +#endif + +// Apply the default category of "Issues" to all of the tests in this assembly +// We use this as a catch-all for tests which haven't been individually categorized +#if UITEST +[assembly: NUnit.Framework.Category("Issues")] +#endif + +namespace Xamarin.Forms.Controls.Issues +{ + [Preserve(AllMembers = true)] + [Issue(IssueTracker.Bugzilla, 29110, "[WinRT/UWP] VerticalOptions = LayoutOptions.Center or CenterAndExpand on Sliders does not result in centered display", PlatformAffected.WinRT)] + public class Bugzilla29110 : TestContentPage + { + protected override void Init() + { + Content = new StackLayout + { + Orientation = StackOrientation.Horizontal, + HorizontalOptions = LayoutOptions.FillAndExpand, + Children = + { + new Label + { + BackgroundColor = Color.CadetBlue, + HorizontalOptions = LayoutOptions.Start, + VerticalOptions = LayoutOptions.CenterAndExpand, + VerticalTextAlignment = TextAlignment.Center, + Text = "Label" + }, + new Slider + { + BackgroundColor = Color.Green, + HorizontalOptions = LayoutOptions.FillAndExpand, + VerticalOptions = LayoutOptions.CenterAndExpand, + Minimum = 0, + Maximum = 100 + } + } + }; + } + } +}
\ No newline at end of file diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems index 08c26ba1..0decf54f 100644 --- a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems +++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems @@ -39,6 +39,7 @@ <Compile Include="$(MSBuildThisFileDirectory)Bugzilla29107.xaml.cs"> <DependentUpon>Bugzilla29107.xaml</DependentUpon> </Compile> + <Compile Include="$(MSBuildThisFileDirectory)Bugzilla29110.cs" /> <Compile Include="$(MSBuildThisFileDirectory)Bugzilla29158.cs" /> <Compile Include="$(MSBuildThisFileDirectory)Bugzilla29363.cs" /> <Compile Include="$(MSBuildThisFileDirectory)Bugzilla29229.cs" /> diff --git a/Xamarin.Forms.Platform.WinRT/SliderRenderer.cs b/Xamarin.Forms.Platform.WinRT/SliderRenderer.cs index ee7a8adc..cf188f15 100644 --- a/Xamarin.Forms.Platform.WinRT/SliderRenderer.cs +++ b/Xamarin.Forms.Platform.WinRT/SliderRenderer.cs @@ -1,5 +1,6 @@ using System; using System.ComponentModel; +using Windows.UI.Xaml; using Windows.UI.Xaml.Controls.Primitives; #if WINDOWS_UWP @@ -24,6 +25,25 @@ namespace Xamarin.Forms.Platform.WinRT SetNativeControl(slider); slider.ValueChanged += OnNativeValueCHanged; + + // Even when using Center/CenterAndExpand, a Slider has an oddity where it looks + // off-center in its layout by a smidge. The default templates are slightly different + // between 8.1/UWP; the 8.1 rows are 17/Auto/32 and UWP are 18/Auto/18. The value of + // the hardcoded 8.1 rows adds up to 49 (when halved is 24.5) and UWP are 36 (18). Using + // a difference of about 6 pixels to correct this oddity seems to make them both center + // more correctly. + // + // The VerticalAlignment needs to be set as well since a control would not actually be + // centered if a larger HeightRequest is set. + if (Element.VerticalOptions.Alignment == LayoutAlignment.Center && Control.Orientation == Windows.UI.Xaml.Controls.Orientation.Horizontal) + { + Control.VerticalAlignment = VerticalAlignment.Center; +#if WINDOWS_UWP + slider.Margin = new Windows.UI.Xaml.Thickness(0, 7, 0, 0); +#else + slider.Margin = new Windows.UI.Xaml.Thickness(0, 13, 0, 0); +#endif + } } double stepping = Math.Min((e.NewElement.Maximum - e.NewElement.Minimum) / 10, 1); |