Files
EmptyMauiApp/MauiApp/Views/BaseContentPage.cs
2023-10-18 19:02:51 +02:00

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));
}
}