所以,我遇到了这个问题,但我不知道如何解决。 基本上,当我从 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());
关于c# - 当用户通过 Navigation.PushAsync(tabbedPage) 打开时,更改 TabbedPage MainTitle 颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46415631/