Я создаю свой собственный ProgressDialogService в Xamarin Forms, и у меня работает служба Android, а также отображается диалоговое наложение, которое затемняет фон и показывает мой ProgressDialog (Xamarin Forms ContentPage). У меня почти также работает служба UWP, но я не могу найти правильный способ загрузки / рендеринга Xamarin Forms ContentPage внутри UWP ContentDialog.
Я знаю, что мог бы создать отдельную страницу внутри UWP и использовать ее в качестве своего ContentDialog, но я бы хотел использовать возможности форм Xamarin и просто использовать один и тот же ProgressDialog на обеих платформах.
Вот то, что я имею до сих пор, и это вроде работает, но выглядит немного забавно. Я знаю, что мне еще нужно поиграть с размерами, но почему это делает странно? Например, текст не выглядит резким, а все выглядит слишком большим.
Хотите знать, на правильном ли я пути или нет? Любой вход приветствуется!
private void InitProgressDialog(ProgressDialog progressDialog = null)
{
_progressDialog = progressDialog;
// check if the page parameter is available
if (_progressDialog != null)
{
// build the loading page with native base
_progressDialog.Parent = Application.Current.MainPage;
_progressDialog.Layout(new Rectangle(0,
0,
Application.Current.MainPage.Width,
Application.Current.MainPage.Height));
_progressDialog.CancelButtonClicked += ProgressDialog_OnCancelButtonClicked;
var renderer = Platform.GetRenderer(progressDialog);
if (renderer == null)
{
renderer = Platform.CreateRenderer(_progressDialog);
Platform.SetRenderer(_progressDialog, renderer);
}
var panel = new StackPanel();
panel.Children.Add(renderer.ContainerElement);
_dialog = new ContentDialog { Content = panel };
_isInitialized = true;
}
}
![enter image description here](https://i.stack.imgur.com/eISWM.png)