首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当用户通过Navigation.PushAsync( TabbedPage )打开时,更改tabbedPage MainTitle颜色

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

Stack Overflow用户
提问于 2017-09-26 07:31:37
回答 1查看 594关注 0票数 1

所以,我有了这个问题,但我不知道该怎么解决。基本上,当我从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);

代码语言:javascript
复制
[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]
EN

回答 1

Stack Overflow用户

发布于 2017-09-28 17:51:36

很抱歉这么晚才回复,通过仔细检查你的描述和代码,我认为你只想在当前页面改变时更改TabbedPage栏上的标题,那么如果你的TabbedPage是这样的:

代码语言:javascript
复制
<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>

您可以简单地在其代码中实现此功能,例如:

代码语言:javascript
复制
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,例如:

代码语言:javascript
复制
MainPage = new NavigationPage(new MainPage());

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46415631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档