48 lines
1.1 KiB
C#
48 lines
1.1 KiB
C#
using MauiApp.ViewModels;
|
|
|
|
namespace MauiApp.Views;
|
|
|
|
public class BaseContentPage<T> : ContentPage where T : BasePageViewModel
|
|
{
|
|
protected T ViewModel { get; }
|
|
private bool _initialized = false;
|
|
|
|
protected BaseContentPage()
|
|
{
|
|
ViewModel = MauiProgram.ServiceProvider.GetService<T>();
|
|
BindingContext = ViewModel;
|
|
|
|
ViewModel.View = this;
|
|
}
|
|
|
|
protected override async void OnAppearing()
|
|
{
|
|
base.OnAppearing();
|
|
|
|
if (!_initialized)
|
|
{
|
|
_ = Task.Run(Initialize);
|
|
_ = Task.Run(() => ViewModel.Initialize());
|
|
_initialized = true;
|
|
}
|
|
|
|
_ = Task.Run(() => ViewModel.OnAppearing());
|
|
}
|
|
|
|
protected virtual Task Initialize()
|
|
{
|
|
return Task.CompletedTask;
|
|
}
|
|
|
|
protected override void OnDisappearing()
|
|
{
|
|
base.OnDisappearing();
|
|
_ = Task.Run(() => ViewModel.OnDisappearing());
|
|
}
|
|
|
|
protected override void OnNavigatedTo(NavigatedToEventArgs args)
|
|
{
|
|
base.OnNavigatedTo(args);
|
|
_ = Task.Run(() => ViewModel.OnNavigatedTo(args));
|
|
}
|
|
} |