我将导航栏上的页面标题设置为
public Homework ()
{
InitializeComponent ();
Title = "Homework";
}
此页面是标签页的子页面,其中标签已有标题" Tab1"。
现在,当我从 Tab1 打开Homework.cs
页面时,上面的代码将标题标题更改为Homework和导航栏标题也会更改为" Homework"。我不想更改标题标题。
使用
的MyTabbed页面代码 public class MyTabbedPage : TabbedPage
{
public MyTabbedPage()
{
this.CurrentPageChanged +=delegate
{
this.Title = this.CurrentPage.Title;
};
}
}
查看一些方便的摘录
public App ()
{
InitializeComponent();
MainPage = new NavigationPage(new LoginPage());
}
LoginContentPage按钮单击
btnLogin.Clicked +=async delegate {
await Navigation.PushAsync(new ParentDashboard(), false);
};
包含标签的ParentDashboard
public partial class ParentDashboard : MyTabbedPage
{
public ParentDashboard()
{
InitializeComponent();
Title="Home"; //upto here title working
}
}
从现在开始,我点击了HomewPage,就像我在这个问题的开头看到的那样。那是行不通的。 我怎么能这样做?
答案 0 :(得分:2)
我猜你的项目的层次结构可能是这样的:
NavigationPage => TabbedPage =>儿童页面。
然后,每当儿童页面的标题发生变化时,TabbedPage
的标题也会发生变化。即使我们为此子页面制作了自定义渲染器,也很难更改页面的navigationBar标题。因为NavigationCtroller的root viewController是你的标签页。
我建议您调整项目的层次结构,使每个子页面都包含导航页面,如:
通过这种方式,您可以设置导航页面的标题以调整标签项的标题,并通过设置Homework
'来更改导航栏的标题。标题。
您可以参考我的代码来构建app()
:
// This is a TabbedPage
var tabbedPage = new MyTabbedPage();
var firstPage = new MainPage();
// The NavigationPage's Title will be shown on the tab, and firstPage's title can be shown on the navigation bar
tabbedPage.Children.Add(new NavigationPage(firstPage) { Title = "FirstPage" });
var homePage = new Homework();
tabbedPage.Children.Add(new NavigationPage(homePage) { Title = "SecondPage" });
MainPage = tabbedPage;
答案 1 :(得分:0)
回答这个问题已经很晚了,但是我花了一些时间在这个问题上,并希望向有相同目标的任何人分享我的解决方案:
假定childPage1的标签标签应比其原始标题短。因此,我将其Title属性更改为较短的版本(“标题”),并将LongTitle属性设置为较长的版本(“完整标题”)
我将页面与TabbedPage构造函数中的另一个子页面一起添加到TabbedPage中:
Children.Add(childPage1);
Children.Add(childPage2);
选项卡标签绑定到它们的Title属性,即较短的属性,即i。 e。对于childPage1,为“ Title”。这是预期的。
单击选项卡时,将触发CurrentPageChanged事件。我使用它来更新TabbedPage的标题,并将其设置为LongTitle(如果存在于子页面中)。
CurrentPageChanged += (s, e) => Title = (CurrentPage as BasePage).LongTitle ?? CurrentPage.Title;
BasePage应替换为页面的适当基类。