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

标签 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 内,并且有效,但我尝试将 tabbedPage 放在 NavigationPage 内(在 PushAsync 方法中; ) 和 Xamarin 绘制了 3 个栏...第一个栏只有一个后退按钮...

有人可以帮忙吗??? 如果您需要更多代码,请告诉我

代码: -> 导航.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 中使用 NavigationPage 显示此 TabbedPage 例如这个:

MainPage = new NavigationPage(new MainPage());

enter image description here

关于c# - 当用户通过 Navigation.PushAsync(tabbedPage) 打开时,更改 TabbedPage MainTitle 颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46415631/

相关文章:

android - 当我没有注册任何接收者时,Activity 泄露了 IntentReceiver

选项卡主机中的 Android fragment View 状态

c# - 图像编码为 ccitt 的 iOS pdf

c# - 如何在 Windows Phone 8.1 中添加共享命令栏

c# - 将 sprintf 转换为 C# 的问题

c# - 命名空间设计和类分离

android - onclick 不会在可滚动的 div 中触发

azure - 如何解决初始化 MobileServiceClient Xamarin.Forms 时出现的错误?

c# - 使用JSON.net解析json字符串

c# - 如何使 HTML 表格 <TD> 不可见