C# is:
SfPopupLayout loadingPopup = new SfPopupLayout();
var template = this.Resources["ProgressTemplate"] as DataTemplate;
loadingPopup.PopupView.ContentTemplate = template;
loadingPopup.PopupView.HeaderTitle = "Loading puzzle data...";
loadingPopup.PopupView.ShowFooter = false;
loadingPopup.PopupView.WidthRequest = 400;
loadingPopup.PopupView.HeightRequest = 150;
loadingPopup.PopupView.ShowCloseButton = false;
loadingPopup.BindingContext = this;
loadingPopup.Show();
Template:
<DataTemplate x:Key="ProgressTemplate">
<Grid VerticalOptions="Center">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="4*"/>
<ColumnDefinition Width="6*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="50"/>
</Grid.RowDefinitions>
<Label Text="Progress"
FontSize="Small"
HorizontalTextAlignment="End"
VerticalTextAlignment="Center"
Grid.Column="1"
Grid.Row="0"></Label>
<ProgressBar x:Name="PuzzleBar"
VerticalOptions="Center"
HeightRequest="20"
Progress="{Binding PuzzleProgress}"
Grid.Column="2"
Grid.Row="0"></ProgressBar>
</Grid>
</DataTemplate>