diff options
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); |