2017-09-25 61 views
1

所以,我得到了這個問題,我不知道解決。 基本上,我想改變TabLayout的mainTitle顏色,當我從Navigation.PushAsync(tabbedPage)調用;看起來很容易,但事實並非如此。 我不知道要更改任何屬性,頂部酒吧... 我在NavigationPage類中看到一個屬性,名爲「BarTextColorProperty」。我能用這個做什麼?更改TabbedPage MainTitle顏色,當用戶打開通過Navigation.PushAsync(tabbedPage)

我測試過,同一個樣品,但在另一種方法... Navigation.PushModalAsync(tabbedPage),此時,在模式頁,並努力:)

可是,我真的需要這個工作一個Navigation.PushAsync(tabbedPage),因爲backButton。我知道,如果你看代碼,你會看到Navigation.PushModalAsync(tabbedPage),tabbedPage在NavigationBar內,而Works,但我嘗試在TabPage中放置一個NavigationPage(在PushAsync方法中;)和Xamarin,繪製3個酒吧...第一個酒吧,只有一個後退按鈕...

有人可以幫助? 如果您需要更多代碼,請告訴我

代碼: - > Navigation.PushAsync(tabbedPage);

[button1.Clicked += (s, e) => 
     { 
      tabbedPage.CurrentPageChanged += (a, b) => 
      { 
       if (tabbedPage.CurrentPage.GetType().Equals(typeof(Page1))) 
       { 
        tabbedPage.BarTextColor = Color.Green; 
       } 
       else 
       { 
        tabbedPage.BarTextColor = Color.Orange; 
       } 
      }; 
      Navigation.PushAsync(tabbedPage); 
     }; 

-> Navigation.PushModalAsync(tabbedPage), 

button2.Clicked += (s, e) => 
     { 
      NavigationPage navigationPageTabbedPage = new NavigationPage(tabbedPage); 
      tabbedPage.CurrentPageChanged += (a, b) => 
      { 
       if (tabbedPage.CurrentPage.GetType().Equals(typeof(Page1))) 
       { 
        navigationPageTabbedPage.BarTextColor = Color.Green; 
       } 
       else 
       { 
        navigationPageTabbedPage.BarTextColor = Color.Orange; 
       } 
      }; 

      Navigation.PushModalAsync(navigationPageTabbedPage); 
     };][1] 
+0

LINK IMAGES:https://wetransfer.com/downloads/97909b77b14d7b352a973be5f4689bc520170925231433/7797ef –

+0

對不起,不太明白,用「NavigationPage」做什麼?當任何條形項目被選中時,你想改變'TabbedPage'的條形文字顏色? –

+0

感謝您的回覆:)...所以,我想改變TabbedPage的頂部欄標題顏色,當用戶更改標籤(CurrentPageChanged事件)...例如,如果tab1被選中,標題是綠色的,如果選擇tab2,標題是橙色..我嘗試做到這一點,當tabbedPage打開「Navigation.PushAsync方法」,並沒有工作...(button1)如果我打開「Navigation.PushModalAsync方法」,它的工作...(button2 ),但我不想打開這個由Navigation.PushModalAsync,因爲我需要一個後退...我怎麼能做到這一點,通過Navigation.PushAsync,並得到相同的結果,我在Navigation.PushModalAsync? –

回答

1

對不起已故的響應,通過仔細檢查你的描述,你的代碼,我想你只需要在當前頁面改變爲改變TabbedPage的欄上的標題,然後如果你的TabbedPage是一樣的東西這樣的:

<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms" 
      xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
      xmlns:local="clr-namespace:TabbedPageForms" 
      x:Class="TabbedPageForms.MainPage"> 

    <local:TodayPage Title="Today" /> 

    <local:SchedulePage Title="Schedule" /> 
</TabbedPage> 

你可以簡單地實現它的代碼這一功能背後例如像這樣:

public partial class MainPage : TabbedPage 
{ 
    public MainPage() 
    { 
     InitializeComponent(); 
    } 

    protected override void OnAppearing() 
    { 
     base.OnAppearing(); 
     this.CurrentPageChanged += MainPage_CurrentPageChanged; 
     ChangeBarColor(); 
    } 

    protected override void OnDisappearing() 
    { 
     this.CurrentPageChanged -= MainPage_CurrentPageChanged; 
     base.OnDisappearing(); 
    } 

    private void MainPage_CurrentPageChanged(object sender, EventArgs e) 
    { 
     ChangeBarColor(); 
    } 

    private void ChangeBarColor() 
    { 
     var currentPage = this.CurrentPage; 
     switch (currentPage.Title) 
     { 
      case "Today": 
       this.BarTextColor = Color.Green; 
       break; 

      case "Schedule": 
       this.BarTextColor = Color.Orange; 
       break; 
     } 
    } 
} 

我沒有看到相對於NavigationPageŸ問題,你可以在App.cs與NavigationPage顯示此TabbedPage只是舉例如下:

MainPage = new NavigationPage(new MainPage()); 

enter image description here

+0

不要擔心:)這是好的:)謝謝你的回覆,但我不是在尋找...你見過我的照片嗎? https://wetransfer.com/downloads/97909b77b14d7b352a973be5f4689bc520170925231433/7797ef –

+0

看看...它可能有助於解釋我的問題... –

+0

1(2)和2(2)圖片 - > Navigation.PushAsync,我可以' t改變「標籤更改顏色測試」顏色標題,當用戶更改標籤... –