Я предлагаю вам создать свойство в App.xaml.cs
, в методах приложения Пуск / Возобновить, указать час дня, а затем в вашей ViewModel вы получите доступ к этому значению.
App.xaml.cs:
public bool IsDarkTheme;
public App()
{
InitializeComponent();
MainPage = new MainPage();
}
public void SetTheme()
{
TimeSpan day = DateTime.Now.TimeOfDay;
if (!(day.Hours < 19 && day.Hours > 6))
{
IsDarkTheme = true;
}
}
protected override void OnStart()
{
// Handle when your app starts
SetTheme();
}
protected override void OnSleep()
{
// Handle when your app sleeps
}
protected override void OnResume()
{
// Handle when your app resumes
SetTheme();
}
Примечание: если пользователь открыл приложение до 7 вечера и возобновил его после, и вы хотите, чтобы страница, которая была возобновлена, сменила внешний вид, вам нужно будет добавить это к страниц (если вы это сделаете, вам больше не нужно определять значение в конструкторе ViewModel):
На страницах xaml.cs:
protected override void OnAppearing()
{
((TheViewModelAssociated)BindingContext).TheViewModelProperty = App.IsDarkTheme;
base.OnAppearing();
}
Ваш ViewModel вы получаете доступ к нему, как это :
App.IsDarkTheme