当用户通过Navigation.PushAsync(tabbedPage)打开时更改TabbedPage MainTitle颜色

时间:2017-09-25 23:31:37

标签: c# android xamarin tabs xamarin.forms

所以,我遇到了这个问题,我不知道要解决。 基本上,当我从Navigation.PushAsync(tabbedPage)调用时,我想更改TabLayout的mainTitle颜色;看似简单,但事实并非如此。 我不知道要改变那个顶级酒吧的任何财产...... 我在一个名为“BarTextColorProperty”的NavigationPage类中看到了一个属性。我该怎么办?

我测试了一个相同的样本,但是在另一个方法中... Navigation.PushModalAsync(tabbedPage),这次,在一个模态页面中,并且工作了:)

但是,我真的需要在Navigation.PushAsync(tabbedPage)中完成这项工作,因为backButton。

要完成,我知道,如果查看代码,您会看到Navigation.PushModalAsync(tabbedPage),tabbedPage位于NavigationBar和Works中,但我尝试将一个tabbedPage放在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]

1 个答案:

答案 0 :(得分:1)

对于迟到的回复感到抱歉,通过仔细检查您的说明和代码,我想您只想更改当前页面更改时TabbedPage栏上的标题,如果您的{{1}是这样的:

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; } } } 相关的任何问题,您可以在App.cs中使用NavigationPage显示此TabbedPage,例如:

NavigationPage

enter image description here