Xamarin.Forms如何基于一天中的时间更改主题

问题描述 投票:0回答:1

我有这样的场景:具有两个主题Light和Dark。我从viewmodel绑定要添加什么主题。我只是不知道如何从设备上获取时间并进行组织。每天晚上7点以后,我需要将主题更改为Dark,默认情况下为Light。如何组织?

xamarin.forms xamarin.android xamarin.ios
1个回答
0
投票

我建议您在App.xaml.cs,应用程序构造函数和Start / Resume方法中创建一个属性,验证一天中的时间,然后在ViewModel上可以访问该值

App.xaml.cs:

public bool IsDarkTheme;

public App()
{
    InitializeComponent();

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

您可以这样访问ViewModel:

App.IsDarkTheme
© www.soinside.com 2019 - 2024. All rights reserved.