diff options
Diffstat (limited to 'Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla26171.cs')
-rw-r--r-- | Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla26171.cs | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla26171.cs b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla26171.cs new file mode 100644 index 00000000..6ad49179 --- /dev/null +++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla26171.cs @@ -0,0 +1,98 @@ +using System; + +using Xamarin.Forms.CustomAttributes; +using Xamarin.Forms.Maps; +using System.Threading.Tasks; + +#if UITEST +using Xamarin.UITest; +using NUnit.Framework; +#endif + +namespace Xamarin.Forms.Controls +{ + [Preserve (AllMembers = true)] + [Issue (IssueTracker.Bugzilla, 26171, "Xamarin.Forms.Maps is not updating VisibleRegion property when layout is changed")] + public class Bugzilla26171 : TestContentPage // or TestMasterDetailPage, etc ... + { + protected override void Init () + { + var map = MakeMap (); + + var label = new Label { AutomationId = "lblValue" }; + + var buttonLayout = new Button { Text = "Change layout" }; + buttonLayout.Clicked += async (a, e) => { + map.VerticalOptions = LayoutOptions.Start; + await Print (map,label); + }; + + var stack = new StackLayout { + Spacing = 0, + Padding = new Thickness (30, 0) + }; + + stack.Children.Add (label); + stack.Children.Add (map); + stack.Children.Add (buttonLayout); + + Content = new ScrollView { Content = stack }; + + Appearing += async (sender, e) => await Print (map, label); + + } + + static async Task Print (Map map, Label label) + { + await Task.Delay(500); + if (map.VisibleRegion != null) { + label.Text = map.VisibleRegion.Radius.Kilometers.ToString (); + } + } + + public static Map MakeMap () + { + Pin colosseum = null; + Pin pantheon = null; + Pin chapel = null; + + var map = new Map { + IsShowingUser = false, + VerticalOptions = LayoutOptions.FillAndExpand, + HeightRequest = 100, + Pins = { + (colosseum = new Pin { + Type = PinType.Place, + Position = new Position (41.890202, 12.492049), + Label = "Colosseum", + Address = "Piazza del Colosseo, 00184 Rome, Province of Rome, Italy" + }), + (pantheon = new Pin { + Type = PinType.Place, + Position = new Position (41.898652, 12.476831), + Label = "Pantheon", + Address = "Piazza della Rotunda, 00186 Rome, Province of Rome, Italy" + }), + (chapel = new Pin { + Type = PinType.Place, + Position = new Position (41.903209, 12.454545), + Label = "Sistine Chapel", + Address = "Piazza della Rotunda, 00186 Rome, Province of Rome, Italy" + }) + } + }; + + return map; + } + +#if UITEST + [Test] + public void Bugzilla26171Test () + { + RunningApp.WaitForElement (q => q.Marked ("lblValue")); + var value = RunningApp.Query (q => q.Marked ("lblValue")) [0].Text; + RunningApp.Screenshot ("I see the Label"); + } +#endif + } +} |