From 6bc6ee5c712b2d29402e895993e38b4666acc3f9 Mon Sep 17 00:00:00 2001 From: Paul DiPietro Date: Tue, 15 Nov 2016 13:41:19 -0600 Subject: [WinRT] Fix ModalPushed/ModalPopped not firing (#490) --- .../Bugzilla43663.cs | 93 ++++++++++++++++++++++ .../Xamarin.Forms.Controls.Issues.Shared.projitems | 1 + 2 files changed, 94 insertions(+) create mode 100644 Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla43663.cs (limited to 'Xamarin.Forms.Controls.Issues') diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla43663.cs b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla43663.cs new file mode 100644 index 00000000..69bba9c6 --- /dev/null +++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla43663.cs @@ -0,0 +1,93 @@ +using Xamarin.Forms.CustomAttributes; +using Xamarin.Forms.Internals; +using System; +using System.Runtime.CompilerServices; + +#if UITEST +using Xamarin.UITest; +using NUnit.Framework; +#endif + +namespace Xamarin.Forms.Controls.Issues +{ + [Preserve(AllMembers = true)] + [Issue(IssueTracker.Bugzilla, 43663, "ModalPushed and ModalPopped not working on WinRT", PlatformAffected.WinRT)] + public class Bugzilla43663 : TestNavigationPage + { + protected override void Init() + { + Application.Current.ModalPushed += ModalPushed; + Application.Current.ModalPopped += ModalPopped; + + var initialPage = new ContentPage(); + var insertedPage = new ContentPage + { + Content = new StackLayout + { + Children = + { + new Label { Text = "This page's appearing unsubscribes from the ModalPushed/ModalPopped events" }, + new Button + { + Text = "Go back", + Command = new Command(async () => await Navigation.PopModalAsync()) + } + } + } + }; + insertedPage.Appearing += (s, e) => + { + Application.Current.ModalPushed -= ModalPushed; + Application.Current.ModalPopped -= ModalPopped; + }; + + var modalPage = new ContentPage(); + modalPage.Content = new StackLayout + { + Children = + { + new Label { Text = "Modal" }, + new Button + { + Text = "Click to dismiss modal", + Command = new Command(async() => + { + await Navigation.PopModalAsync(); + }) + } + }, + }; + + initialPage.Content = new StackLayout + { + VerticalOptions = LayoutOptions.Center, + Children = + { + new Button + { + Text = "Click to push Modal", + Command = new Command(async () => await Navigation.PushModalAsync(modalPage)) + }, + new Button + { + Text = "Go back", + Command = new Command(async () => await Navigation.PopAsync()) + } + } + }; + + PushAsync(initialPage); + Navigation.InsertPageBefore(insertedPage, initialPage); + } + + void ModalPushed(object sender, ModalPushedEventArgs e) + { + DisplayAlert("Pushed", "Message", "Cancel"); + } + + void ModalPopped(object sender, ModalPoppedEventArgs e) + { + DisplayAlert("Popped", "Message", "Cancel"); + } + } +} \ 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 263feb5d..bc656f77 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 @@ -127,6 +127,7 @@ + -- cgit v1.2.3