forked from xamarin/Xamarin.Forms
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathWindowsBasePage.cs
59 lines (50 loc) · 1.45 KB
/
WindowsBasePage.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
using System;
using System.ComponentModel;
using Windows.ApplicationModel;
namespace Xamarin.Forms.Platform.UWP
{
public abstract class WindowsBasePage : Windows.UI.Xaml.Controls.Page
{
public WindowsBasePage()
{
if (!Windows.ApplicationModel.DesignMode.DesignModeEnabled)
{
Windows.UI.Xaml.Application.Current.Suspending += OnApplicationSuspending;
Windows.UI.Xaml.Application.Current.Resuming += OnApplicationResuming;
}
}
protected Platform Platform { get; private set; }
protected abstract Platform CreatePlatform();
protected void LoadApplication(Application application)
{
if (application == null)
throw new ArgumentNullException("application");
Application.SetCurrentApplication(application);
Platform = CreatePlatform();
Platform.SetPage(Application.Current.MainPage);
application.PropertyChanged += OnApplicationPropertyChanged;
Application.Current.SendStart();
}
void OnApplicationPropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == "MainPage")
Platform.SetPage(Application.Current.MainPage);
}
void OnApplicationResuming(object sender, object e)
{
Application.Current.SendResume();
}
async void OnApplicationSuspending(object sender, SuspendingEventArgs e)
{
SuspendingDeferral deferral = e.SuspendingOperation.GetDeferral();
try
{
await Application.Current.SendSleepAsync();
}
finally
{
deferral.Complete();
}
}
}
}