summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Platform.UAP/FormsPresenter.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Xamarin.Forms.Platform.UAP/FormsPresenter.cs')
-rw-r--r--Xamarin.Forms.Platform.UAP/FormsPresenter.cs35
1 files changed, 35 insertions, 0 deletions
diff --git a/Xamarin.Forms.Platform.UAP/FormsPresenter.cs b/Xamarin.Forms.Platform.UAP/FormsPresenter.cs
new file mode 100644
index 00000000..50400cbd
--- /dev/null
+++ b/Xamarin.Forms.Platform.UAP/FormsPresenter.cs
@@ -0,0 +1,35 @@
+using System;
+using Windows.UI.Xaml;
+using Xamarin.Forms;
+
+namespace Xamarin.Forms.Platform.UWP
+{
+ internal class FormsPresenter : Windows.UI.Xaml.Controls.ContentPresenter
+ {
+ public FormsPresenter()
+ {
+ Loaded += FormsPresenter_Loaded;
+ Unloaded += FormsPresenter_Unloaded;
+ SizeChanged += (s, e) =>
+ {
+ if (ActualWidth > 0 && ActualHeight > 0)
+ {
+ var page = (Page)DataContext;
+ ((IPageController)page.RealParent).ContainerArea = new Rectangle(0, 0, ActualWidth, ActualHeight);
+ }
+ };
+ }
+
+ void FormsPresenter_Loaded(object sender, RoutedEventArgs e)
+ {
+ var page = (IPageController)DataContext;
+ page.SendAppearing();
+ }
+
+ void FormsPresenter_Unloaded(object sender, RoutedEventArgs e)
+ {
+ var page = (IPageController)DataContext;
+ page.SendDisappearing();
+ }
+ }
+}