I have code which is custom render worked on iOS xamarin form but i want similar for UWP,
using System;
using MobileAssessment.Interface;
using MobileAssessment.iOS;
using MobileAssessment.Pages;
using UIKit;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;
using iOSPlatform = Xamarin.Forms.Platform.iOS.Platform;
[assembly: Xamarin.Forms.Dependency(typeof(ILoadingPageServiceiOS))]
namespace MobileAssessment.iOS
{
public class ILoadingPageServiceiOS : ILodingPageService
{
private UIView _nativeView;
private bool _isInitialized;
public void ShowLoadingPage()
{
// check if the user has set the page or not
if (!_isInitialized)
InitLoadingPage(new LoadingIndicatorPage()); // set the default page
// showing the native loading page
UIApplication.SharedApplication.KeyWindow.AddSubview(_nativeView);
}
public void HideLoadingPage()
{
_nativeView.RemoveFromSuperview();
}
public void InitLoadingPage(ContentPage loadingIndicatorPage = null)
{
// check if the page parameter is available
if (loadingIndicatorPage != null)
{
// build the loading page with native base
loadingIndicatorPage.Parent = Xamarin.Forms.Application.Current.MainPage;
loadingIndicatorPage.Layout(new Rectangle(0, 0,
Xamarin.Forms.Application.Current.MainPage.Width,
Xamarin.Forms.Application.Current.MainPage.Height));
var renderer = loadingIndicatorPage.GetOrCreateRenderer();
_nativeView = renderer.NativeView;
_nativeView.BackgroundColor = UIColor.Black;
_nativeView.Alpha = (System.nfloat)0.7;
_isInitialized = true;
}
}
}
internal static class PlatformExtension
{
public static IVisualElementRenderer GetOrCreateRenderer(this VisualElement bindable)
{
var renderer = iOSPlatform.GetRenderer(bindable);
if (renderer == null)
{
renderer = iOSPlatform.CreateRenderer(bindable);
iOSPlatform.SetRenderer(bindable, renderer);
}
return renderer;
}
}
}
I have tried below code for UWP,
using System;
using MobileAssessment.Interface;
using MobileAssessment.UWP;
using MobileAssessment.Pages;
using UIKit;
using Xamarin.Forms;
using Xamarin.Forms.Platform.UWP;
using uwpPlatform = Xamarin.Forms.Platform.UWP.Platform;
[assembly: Xamarin.Forms.Dependency(typeof(ILoadingPageServiceRenderer))]
namespace MobileAssessment.UWP
{
public class ILoadingPageServiceRenderer : ILodingPageService
{
private View _nativeView;
private bool _isInitialized;
public void ShowLoadingPage()
{
// check if the user has set the page or not
if (!_isInitialized)
InitLoadingPage(new LoadingIndicatorPage()); // set the default page
// showing the native loading page
Application.SharedApplication.KeyWindow.AddSubview(_nativeView);
}
public void HideLoadingPage()
{
_nativeView.RemoveFromSuperview();
}
public void InitLoadingPage(ContentPage loadingIndicatorPage = null)
{
// check if the page parameter is available
if (loadingIndicatorPage != null)
{
// build the loading page with native base
loadingIndicatorPage.Parent = Xamarin.Forms.Application.Current.MainPage;
loadingIndicatorPage.Layout(new Rectangle(0, 0,
Xamarin.Forms.Application.Current.MainPage.Width,
Xamarin.Forms.Application.Current.MainPage.Height));
var renderer = loadingIndicatorPage.GetOrCreateRenderer();
_nativeView = renderer.NativeView;
_nativeView.BackgroundColor = Color.Black;
_nativeView.Alpha = (System.nfloat)0.7;
_isInitialized = true;
}
}
}
internal static class PlatformExtension
{
public static IVisualElementRenderer GetOrCreateRenderer(this VisualElement bindable)
{
var renderer = uwpPlatform.GetRenderer(bindable);
if (renderer == null)
{
renderer = iOSPlatform.CreateRenderer(bindable);
uwpPlatform.SetRenderer(bindable, renderer);
}
return renderer;
}
}
}
The above code actually for activity indicator got from https://github.com/UdaraAlwis/Xamarin-Playground/tree/master/XFLoadingPageService
But forum not sharing same solution for UWP, so i create my code for windows.