summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla29110.cs49
-rw-r--r--Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems1
-rw-r--r--Xamarin.Forms.Platform.WinRT/SliderRenderer.cs20
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);