如何更改Xamarin.Forms上的后退按钮文本

时间:2016-08-18 20:39:13

标签: xamarin xamarin.forms

我一直试图在没有运气的情况下更改Xamarin.Forms中后退按钮的文本。

我已经尝试过这段代码而没有运气:

NavigationPage.SetBackButtonTitle(this, "");

我正在使用MasterDetailPage

我尝试将代码添加到XAML cs文件的构造函数中。

使用的库:PRISM 6.2.0,Xamarin Forms 2.3.1.114

有任何建议或想法吗?

提前致谢

6 个答案:

答案 0 :(得分:18)

由于topic

  

有关此API的一点不直观的事情是,您正在设置后退按钮的标题,该页面将显示此页面是您要返回的页面。例如,您正尝试将标题设置为" Home"。这意味着你应该在代表" home"的页面上调用这个方法。页面,而不是显示" Home"的后退按钮时可见的页面。正在展示。

因此,如果您要从Page1导航到Page2,则应在NavigationPage.SetBackButtonTitle(this, "")的构造函数中设置Page1,在Page2上设置为{{1}}后退标题。

答案 1 :(得分:5)

您必须将上一页的Backbutton标题设置为string.Empty。默认情况下,它是导航堆栈上显示为后退按钮文本的上一页的标题。

Android也不支持此属性。

答案 2 :(得分:5)

迟来的答案,但也许有人会发现这对将来很有用......无论如何,如果你想摆脱XAML的后退按钮标题,你可以为任何NavigationPage.BackButtonTitle=""添加ContentPage删除了标题,或者您可以在ContentPage文件中定义新的App.xaml样式,如下所示:

<Style x:Key="ContentPageStyle" TargetType="ContentPage">
    <Setter Property="BackgroundColor" Value="White" /><!-- just an example of other things that can be in here -->
    <Setter Property="NavigationPage.BackButtonTitle" Value="" />
</Style>

然而,我无法将其变为隐式全局样式,无需为每个Style="{StaticResource ContentPageStyle}"指定ContentPage而自动应用 - 我不知道为什么不起作用。

答案 3 :(得分:4)

您也可以从当前xaml页面的Code Behind执行此操作

public TodoPage()
{
    InitializeComponent();
    NavigationPage.SetBackButtonTitle(this, "Back");
}

NB :必须在您要设置的上一页上完成。

e.g。如果您希望页面B显示“后退”标题,则页面A必须包含代码。

答案 4 :(得分:0)

您可以在ContentPage上设置属性NavigationPage.BackButtonTitle

例如:

<?xml version="1.0" encoding="utf-8"?> <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:d="http://xamarin.com/schemas/2014/forms/design" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:T3R" mc:Ignorable="d" Title="Title of Page" NavigationPage.BackButtonTitle="Cancel" x:Class="T3R.MainPage">

记住以下内容:

  • 我了解这仅适用于iOS
  • 对于任何给定页面,后退按钮标题均由显示该页面的页面设置。这样,按钮标签可以相对于其在导航堆栈上的页面有所变化(可能有很多)。

答案 5 :(得分:0)

您可以按以下步骤(在ContentPage.Content之前)在XAML中设置后退按钮文本:

<NavigationPage.TitleView>
    <Label Text="{Binding PageTitle}" HorizontalOptions="Center"/>
</NavigationPage.TitleView>