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

我测试了相同的示例,但是使用了另一种方法... Navigation.PushModalAsync(tabbedPage),这次,在模式页面中,并且可以工作:)

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

最后,我知道,如果您看一下代码,就会看到Navigation.PushModalAsync(tabbedPage),tabbedPage在NavigationBar内并且可以运行,但是我尝试将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]

最佳答案

对不起,我的答复很晚,请仔细检查您的描述和代码,我认为您只想在更改当前页面时更改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中将此TabbedPageNavigationPage一起显示,例如:

MainPage = new NavigationPage(new MainPage());


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

10-07 23:21