为啥在使用 Prism 在 Xamarin.Forms 中导航到 root 时,我的 NavigationPage 顶部会出现默认标题?
Posted
技术标签:
【中文标题】为啥在使用 Prism 在 Xamarin.Forms 中导航到 root 时,我的 NavigationPage 顶部会出现默认标题?【英文标题】:Why do I get the default header at the top of my NavigationPage, when navigating to root in Xamarin.Forms with Prism?为什么在使用 Prism 在 Xamarin.Forms 中导航到 root 时,我的 NavigationPage 顶部会出现默认标题? 【发布时间】:2020-03-02 03:41:21 【问题描述】:我有一个用 Xamarin.Forms 编写的 ios 应用程序,它使用 Prism NavigationService 进行导航。当用户按下注销按钮时,导航将返回登录屏幕。多次执行此操作后,标题会重新出现。
我一直在使用代码抑制每个屏幕上的 NavigationPage 标题
NavigationPage.SetHasNavigationBar(this, false);
这最初有效。但是,它在弹出导航堆栈几次后停止工作。
在发生这种情况的登录页面上,我还尝试在 XAML 中添加以下内容,结果相同。
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:BIMSMobile.ViewModels"
NavigationPage.HasNavigationBar="False"
x:Class="BIMSMobile.Views.LoginPage">
<ContentPage.Content>
...
我禁止使用 NavigationPage 标头以支持具有注销按钮的自定义视图。 注销按钮具有以下处理程序:
protected void OnLogoutClicked(object sender, EventArgs e)
SessionHelper.Instance.SignOutUser();
在 SessionHelper 中,我执行以下操作:
await NavigationService.NavigateAsync("NavigationPage/LoginPage");
蓝色标题在应用打开时被抑制,并在前几次后退导航(弹出)中保持不变。我希望情况总是如此。但是,在第二次注销后,默认标题重新出现,将我的其余内容向下推到屏幕上。
【问题讨论】:
【参考方案1】:显然这不是由 Navigation 或在代码中错误地调用 SetHasNavigationBar 引起的。这是由资源中的样式引起的:\我的修复如下。
<Style TargetType="NavigationPage">
<Setter Property="HasNavigationBar" Value="False" />
</Style>
【讨论】:
以上是关于为啥在使用 Prism 在 Xamarin.Forms 中导航到 root 时,我的 NavigationPage 顶部会出现默认标题?的主要内容,如果未能解决你的问题,请参考以下文章
华为笔记本为啥安装不了graphpad prism8破解版?
华为笔记本为啥安装不了graphpad prism8破解版?
如何手动安装Xamarin与Xamarin for VisualStudio