如何独立于Tab标题修改NavigationBar标题?
问题的核心在于:TabbedPage的子页面默认会用自身的Title属性同时作为Tab标题和NavigationBar标题,当你在Homework页面修改Title时,会同时覆盖Tab的标题。我们需要把这两个标题分开设置。
具体解决方案
方法1:通过代码设置Tab标题(推荐)
在将Homework页面添加到TabbedPage的子项时,单独指定Tab的标题,而页面自身的Title用来控制NavigationBar的标题:
- 保持Homework页面的构造函数不变:
public Homework () { InitializeComponent (); Title = "Homework"; // 这个值会作为NavigationBar的标题 }
- 在ParentDashboard的构造函数中,添加Homework页面时设置Tab标题:
public partial class ParentDashboard : MyTabbedPage { public ParentDashboard() { InitializeComponent(); Title="Home"; // 假设你是通过代码添加子页面,如果是XAML添加看方法2 var homeworkPage = new Homework(); // 设置Tab的标题为"Tab1",与页面自身Title分离 TabbedPage.SetTabTitle(homeworkPage, "Tab1"); this.Children.Add(homeworkPage); } }
方法2:通过XAML设置Tab标题
如果你的ParentDashboard是用XAML编写的,直接在子页面标签上添加TabbedPage.Title属性:
<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:YourNamespace" x:Class="YourNamespace.ParentDashboard"> <TabbedPage.Children> <!-- Tab标题设为"Tab1",页面自身Title设为"Homework" --> <local:Homework Title="Homework" TabbedPage.Title="Tab1" /> <!-- 其他Tab页面 --> </TabbedPage.Children> </TabbedPage>
验证MyTabbedPage的逻辑
你的MyTabbedPage中的CurrentPageChanged事件逻辑是正确的,它会将TabbedPage的Title(即NavigationBar标题)设置为当前页面的Title,这样切换到Homework页面时,NavigationBar会显示"Homework",而Tab标题保持"Tab1",完全符合你的需求。
为什么之前的代码会出问题?
之前你直接设置Homework页面的Title,而TabbedPage默认使用子页面的Title作为Tab标题,所以修改Title时会同时影响Tab和NavigationBar。通过TabbedPage.SetTabTitle(或XAML的TabbedPage.Title)可以单独指定Tab标题,实现两者的分离。
内容的提问来源于stack exchange,提问作者Arvind Chourasiya
相关产品推荐
相关产品推荐

