Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何更改导航栏的颜色?_C#_Xamarin_Xamarin.forms - Fatal编程技术网

C# 如何更改导航栏的颜色?

C# 如何更改导航栏的颜色?,c#,xamarin,xamarin.forms,C#,Xamarin,Xamarin.forms,使用Xamarin表单Pcl和Prism库 内置APP.CS protected override void OnInitialized() { //Initialize(); InitializeComponent(); NavigationService.NavigateAsync("NavigationPage/MainPage"); } protected override void RegisterTypes() { Container.Register

使用Xamarin表单Pcl和Prism库 内置APP.CS

protected override void OnInitialized()
{
   //Initialize();

   InitializeComponent();

   NavigationService.NavigateAsync("NavigationPage/MainPage");
}

protected override void RegisterTypes()
{
    Container.RegisterTypeForNavigation<NavigationPage>();
    Container.RegisterTypeForNavigation<MainPage,MainPageViewModel>
    ("MainPage");
}

但是它永远不会改变导航栏的颜色。

我建议在Xamarin上打开一个问题。在没有Prism的Xamarin Forms应用程序中,这实际上不起作用。如果您在应用程序中使用单一样式,则只需将以下样式添加到app.xaml

<Application.Resources>
    <!-- Application resource dictionary -->
    <ResourceDictionary>
        <Style TargetType="NavigationPage">
            <Setter Property="HasNavigationBar" Value="True" />
            <Setter Property="BarTextColor" Value="Black" />
            <Setter Property="BarBackgroundColor" Value="Red" />
        </Style>
    </ResourceDictionary>
</Application.Resources>


否则,我可能建议实现一个名为
INavigatingAware
的NavigationPage,并使用NavigationParameters帮助它确定需要使用的样式

我创建了自己的导航页面

public class CustomNav : NavigationPage
 {
      public CustomNav() 
       {
            //here you can set all you styles 
       } 
  } 
注册时

Container.RegisterTypeForNavigation<CustomNav>("NavigationPage");
Container.RegisterTypeForNavigation(“NavigationPage”);

因此,当我使用Prism时,我可以引用它NavigationPage

,请遵循以下链接:其中“注册”部分中的T是您的自定义NavigationPage(在下面的示例中
AppInfoNavPage
),您可以在其中像这样设置构造函数中的各种属性

public partial class AppInfoNavPage : NavigationPage
{
    public AppInfoNavPage()
    {
        InitializeComponent();
        BarBackgroundColor = App.Data.DarkBlue;
        BarTextColor = Color.White;
    }
}

这实际上与棱镜无关。供参考:可以找到Xamarin的相关部分。iOS的表格2.3.4。因此,这实际上应该是可行的,尽管它不可行。但已更改为。我将颜色从style.xml更改为。如果您使用的是PrismApplication,则需要进行一次更改。这没有错,但仅当您的应用程序中需要多个导航页面,每个页面都需要不同的样式时才应使用。在应用程序资源中设置全局样式要好得多。
public partial class AppInfoNavPage : NavigationPage
{
    public AppInfoNavPage()
    {
        InitializeComponent();
        BarBackgroundColor = App.Data.DarkBlue;
        BarTextColor = Color.White;
    }
}