在Xamarin中控制和更改导航栏背景颜色的问题

时间:2019-09-26 18:15:33

标签: c# xamarin

我一直在尝试更改Xamarin Forms中导航栏的背景颜色。我有一个MainPage.xaml,它在App.xaml.cs文件中使用以下代码。这项工作...

public App()
    {
        InitializeComponent();

        MainPage = new NavigationPage(new MainPage())
        {
           BarBackgroundColor = Color.AliceBlue, // Sets color of Navigation Top Bar
           BarTextColor = Color.White // Sets the text color of the Navigation Top Bar
        };
    }

我遇到的问题是,我从一个Splash页面开始,该页面显示Lottie动画5秒钟,然后导航到MainPage。当MainPage出现时,导航栏始终只是白色。我从Splash.xml页面导航到该页面,并使用Splash.xaml.cs文件中的以下代码:

public partial class Splash : ContentPage
{
    public Splash()
    {
        InitializeComponent();
    }

    protected async override void OnAppearing()
    {
        base.OnAppearing();
        await Task.Delay(5000);
        await this.Navigation.PushModalAsync(new NavigationPage(new MainPage()));
    }
}

我尝试将以下内容放入App.xaml文件中,但没有任何作用:

<Application.Resources>
    <ResourceDictionary>

        <Style TargetType="NavigationPage">
            <Setter Property="BarBackgroundColor" Value="AliceBlue"/>
        </Style>

       </ResourceDictionary>
</Application.Resources>

在这种情况下,我有什么想法想要声明和控制Navigation BarBackgroundColor?

谢谢。

1 个答案:

答案 0 :(得分:0)

在第一种情况下,它按预期运行。在这一行:

await this.Navigation.PushModalAsync(new NavigationPage(new MainPage()));

您正在创建一个新的NavigationPage,因此您之前的代码与之无关,如果您希望获得相同的效果,则需要再次设置颜色。

考虑第二种解决方案,我希望它能起作用,所以可能您没有正确测试它,或者您有一些替代行为的代码。