Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
A common base page for using IsBusy property to show a busy indicator.
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="LoadingPage"
x:Name="ContentPage">
<ContentPage.Content>
<AbsoluteLayout>
<ContentView Content="{Binding Source={x:Reference ContentPage},Path=MainContent}"
HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"
AbsoluteLayout.LayoutBounds="0,0,1,1" AbsoluteLayout.LayoutFlags="All">
</ContentView>
<!-- Your Busy Indicator (Check out syncfusion's busy indicator) -->
<ContentView Content="{Binding Source={x:Reference ContentPage}, Path=LoadingView}"
IsVisible="{Binding Source={x:Reference ContentPage},Path=IsBusy}"
AbsoluteLayout.LayoutBounds="0,0,1,1" AbsoluteLayout.LayoutFlags="All" />
</AbsoluteLayout>
</ContentPage.Content>
</ContentPage>
[ContentProperty(nameof(MainContent))]
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class LoadingPage : ContentPage
{
public LoadingPage()
{
InitializeComponent();
}
public static readonly BindableProperty MainContentProperty =
BindableProperty.Create(nameof(MainContent), typeof(View), typeof(LoadingPage));
public static readonly BindableProperty LoadingContentProperty =
BindableProperty.Create(nameof(LoadingView), typeof(View), typeof(LoadingPage));
public View LoadingView
{
get => (View) GetValue(LoadingContentProperty);
set => SetValue(LoadingContentProperty, value);
}
public View MainContent
{
get { return (View) GetValue(MainContentProperty); }
set { SetValue(MainContentProperty, value); }
}
protected override void OnBindingContextChanged()
{
base.OnBindingContextChanged();
if (MainContent == null)
{
return;
}
SetInheritedBindingContext(MainContent, BindingContext);
}
}
@SalihKARAHAN

This comment has been minimized.

Copy link

@SalihKARAHAN SalihKARAHAN commented Jul 17, 2019

Hi @QiMata
How do you use this base page? Can you share usage of this LoadingPage?
Thanks.

@QiMata

This comment has been minimized.

Copy link
Owner Author

@QiMata QiMata commented Jul 17, 2019

The other pages in the application would inherit from BaseContentPage instead of Content page.

@Im-PJ

This comment has been minimized.

Copy link

@Im-PJ Im-PJ commented Jul 20, 2019

Instead of inheriting from BasePage we can also create a controltemplate like shown here http://surfy57.free.fr/?p=42

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment