diff options
Diffstat (limited to 'Xamarin.Forms.Platform.WinRT/PageRenderer.cs')
-rw-r--r-- | Xamarin.Forms.Platform.WinRT/PageRenderer.cs | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/Xamarin.Forms.Platform.WinRT/PageRenderer.cs b/Xamarin.Forms.Platform.WinRT/PageRenderer.cs index d33ff028..708c13b2 100644 --- a/Xamarin.Forms.Platform.WinRT/PageRenderer.cs +++ b/Xamarin.Forms.Platform.WinRT/PageRenderer.cs @@ -15,6 +15,8 @@ namespace Xamarin.Forms.Platform.WinRT bool _loaded; + IPageController PageController => Element as IPageController; + protected override void Dispose(bool disposing) { if (!disposing || _disposed) @@ -24,13 +26,13 @@ namespace Xamarin.Forms.Platform.WinRT if (Element != null) { - ReadOnlyCollection<Element> children = Element.LogicalChildren; + ReadOnlyCollection<Element> children = ((IElementController)Element).LogicalChildren; for (var i = 0; i < children.Count; i++) { var visualChild = children[i] as VisualElement; visualChild?.Cleanup(); } - Element?.SendDisappearing(); + PageController?.SendDisappearing(); } base.Dispose(); @@ -40,10 +42,7 @@ namespace Xamarin.Forms.Platform.WinRT { base.OnElementChanged(e); - if (e.OldElement != null) - { - e.OldElement.SendDisappearing(); - } + ((IPageController)e.OldElement)?.SendDisappearing(); if (e.NewElement != null) { @@ -56,7 +55,7 @@ namespace Xamarin.Forms.Platform.WinRT } if (_loaded) - e.NewElement.SendAppearing(); + ((IPageController)e.NewElement).SendAppearing(); } } @@ -68,13 +67,13 @@ namespace Xamarin.Forms.Platform.WinRT return; } _loaded = true; - Element?.SendAppearing(); + PageController?.SendAppearing(); } void OnUnloaded(object sender, RoutedEventArgs args) { _loaded = false; - Element?.SendDisappearing(); + PageController?.SendDisappearing(); } } }
\ No newline at end of file |