如何在Xamarin中以编程方式更改导航栏的背景颜色?

时间:2016-11-25 06:44:11

标签: xamarin xamarin.forms

我在Xamarin上的UWP项目中创建了一个导航栏。

App.xaml.cs
...
public app()
{
  InitializeComponent();
  MainPage = new NavigationPage(new LoginPage()){
    BarBackgroundColor = Color.Black;
  }
}

所以如果我在设置页面,我需要以编程方式更改导航栏的颜色。

SettingPage.xaml.cs

...
private void clicked_btn(sender, e) {
  ...
  // how can I get the handle of navigationbar and then change the attribute of one???
}

这可能吗?

我有办法吗?

2 个答案:

答案 0 :(得分:4)

最好不要这样做,或者通过自定义渲染器来做。 但下面是表单方法:

var navigationPage = Application.Current.MainPage as NavigationPage;
navigationPage.BarBackgroundColor = Color.Black;

答案 1 :(得分:3)

从类定义中,您可以设置条形背景颜色。像这样。

namespace ProyectName
{
    public class MainPage
    {
        public MainPage()
        {
            BarBackgroundColor = Color.FromHex("#484559");
            BarTextColor = Color.White;
        }
    }
}

或者从App.xml中添加ResourceDictionary

<?xml version="1.0" encoding="utf-8"?>
<Application xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="StockIt.App">
    <Application.Resources>
        <ResourceDictionary>
            <Color x:Key="Primary">#484559</Color>
            <Style TargetType="NavigationPage">
                <Setter Property="BarBackgroundColor" Value="{StaticResource Primary}" />
                <Setter Property="BarTextColor" Value="White" />
            </Style>
        </ResourceDictionary>
    </Application.Resources>
</Application>