2017-01-12 12 views
6

Mam następujący formularz utworzony za pomocą formularzy Xamarin. Rysowałem w czerwonym prostokącie, aby podkreślić obszar problemowy. Potrzebuję niebieskiego koloru w nagłówku, aby mieć inny kolor i pokazać tytuł.Formularze Xamarin kontrolują kolor/tytuł paska nagłówka

enter image description here

Oto co usiłuję zbliżyć. Zignoruj ​​tylną strzałkę i fakt, że menu hamburgerów jest po prawej stronie (btw, czy MasterDetail może mieć hamburgera po prawej czy po lewej?).

enter image description here

Poniższy kod jest co używam do stworzenia tego. Osadzam moją Stronę Główną (która ma ListView) na Stronie nawigacyjnej. Następnie ustawiłem stronę szczegółów strony MasterDetailPage na wyżej wspomnianą stronę nawigacyjną. Ustawienie właściwości BackgroundColor tutaj nie działa. Zauważ, że właściwość Tytuł również nie działa.

Jak zmienić kolor i tytuł tła nagłówka?

 var navPage = new NavigationPage(new MainPage()); 

     App.Current.MainPage = new MasterDetailPage 
     { 
      BackgroundColor = Color.FromHex("#174873"), 
      Title = "MY DRIVES", 
      Master = new MenuPage() 
      { 
       Title = "Master Page Title" 
      }, 
      Detail = navPage 
     }; 

Odpowiedz

3

Ustaw BarBackgroundColor z NavigationPage. Można zrobić coś takiego (w najbardziej podstawowym sensie przykład):

 var nav = new NavigationPage 
     { 
      Title = "Detail" 
     }; 
     nav.PushAsync(new ContentPage() { Title = "Home" }); 
     nav.BarBackgroundColor = Color.MediumPurple; 

     var mdp = new MasterDetailPage() 
     { 
      Master = new ContentPage() 
      { 
       Title = "Master" 
      }, 
      Detail = nav 
     }; 
     MainPage = mdp; 

Tytuł ContentPage prezentowane przez NavigationPage co pokaże tytuł na tym pasku.

+0

Tak, że pracował. Mam pytanie, które zadam jako nowe pytanie. Dzięki! –

13

Jeśli chcesz użyć jednego koloru dla wszystkie elementy Nawigacja w witrynie, możesz to zrobić łatwiej. Dodaj globalny styl aplikację dla NavigationPage

<?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="My.App"> 
    <Application.Resources> 
     <!-- Application resource dictionary --> 
     <ResourceDictionary> 
      <!-- Pallete -->  
      <Color x:Key="primary-back-title-color">#4a148c</Color> 
      <Color x:Key="primary-title-color">#FFFFFF</Color> 
      <!-- Pallete-end --> 
      <Style ApplyToDerivedTypes="true" TargetType="NavigationPage"> 
       <Setter Property="BarBackgroundColor" Value="{StaticResource Key=primary-back-title-color}"/> 
       <Setter Property="BarTextColor" Value="{StaticResource Key=primary-title-color}"/> 
      </Style> 
     </ResourceDictionary> 
    </Application.Resources> 
</Application> 

Teraz można zrobić:

 void OnTappedProfile(object sender, System.EventArgs e) 
     { 
      Navigation.PushAsync(new Profile()); 
     } 

Gdzie profilu jest ContentPage

+0

Dzięki, to zadziałało dla mnie. Czy można to wykorzystać do dodania obrazów, takich jak logo do paska nawigacji lub obrazu tła? – Diomedes

+0

Myślę, że możesz używać w ten sposób. Jeśli potrzebujesz więcej personalizacji * NavigationPage *, musisz użyć niestandardowego renderowania. Możesz próbować użyć mieszanego stylu i renderowania. – n0n1

+0

, które jest idealnym rozwiązaniem, a ApplyToDerivedTypes = "true" należy podświetlić tutaj. ponieważ jeśli używasz ContentPage bez tej wartości, nie działa. Dziękuję Ci – batmaci

Powiązane problemy