зеркало из https://github.com/DeGsoft/maui-linux.git
59 строки
1.5 KiB
C#
59 строки
1.5 KiB
C#
using System;
|
|
using System.ComponentModel;
|
|
using Windows.ApplicationModel;
|
|
|
|
#if WINDOWS_UWP
|
|
|
|
namespace Xamarin.Forms.Platform.UWP
|
|
#else
|
|
|
|
namespace Xamarin.Forms.Platform.WinRT
|
|
#endif
|
|
{
|
|
public abstract class WindowsBasePage : Windows.UI.Xaml.Controls.Page
|
|
{
|
|
public WindowsBasePage()
|
|
{
|
|
if (!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();
|
|
await Application.Current.SendSleepAsync();
|
|
deferral.Complete();
|
|
}
|
|
}
|
|
} |