summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Platform.WinRT.Phone/WindowsPhonePlatform.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Xamarin.Forms.Platform.WinRT.Phone/WindowsPhonePlatform.cs')
-rw-r--r--Xamarin.Forms.Platform.WinRT.Phone/WindowsPhonePlatform.cs41
1 files changed, 41 insertions, 0 deletions
diff --git a/Xamarin.Forms.Platform.WinRT.Phone/WindowsPhonePlatform.cs b/Xamarin.Forms.Platform.WinRT.Phone/WindowsPhonePlatform.cs
new file mode 100644
index 00000000..7564e673
--- /dev/null
+++ b/Xamarin.Forms.Platform.WinRT.Phone/WindowsPhonePlatform.cs
@@ -0,0 +1,41 @@
+using System.Threading.Tasks;
+using Windows.UI.ViewManagement;
+
+namespace Xamarin.Forms.Platform.WinRT
+{
+ internal sealed class WindowsPhonePlatform
+ : Platform
+ {
+ public WindowsPhonePlatform (Windows.UI.Xaml.Controls.Page page)
+ : base (page)
+ {
+ _status = StatusBar.GetForCurrentView ();
+ _status.Showing += OnStatusBarShowing;
+ _status.Hiding += OnStatusBarHiding;
+ }
+
+ internal override Rectangle WindowBounds
+ {
+ get
+ {
+ bool landscape = Device.Info.CurrentOrientation.IsLandscape ();
+ double offset = (landscape) ? _status.OccludedRect.Width : _status.OccludedRect.Height;
+
+ Rectangle original = base.WindowBounds;
+ return new Rectangle (original.X, original.Y, original.Width - ((landscape) ? offset : 0), original.Height - ((landscape) ? 0 : offset));
+ }
+ }
+
+ readonly StatusBar _status;
+
+ void OnStatusBarHiding (StatusBar sender, object args)
+ {
+ UpdatePageSizes ();
+ }
+
+ void OnStatusBarShowing (StatusBar sender, object args)
+ {
+ UpdatePageSizes ();
+ }
+ }
+}