导航后如何更改页面标题

时间:2019-01-31 03:51:51

标签: c# xamarin xamarin.forms

App._variable = "Title"之后,我先设置Navigation.PushAsync(new SecoundPage()),然后再设置App._variable = "New Title",然后使用Navigation.PopAsync())设置首页的标题,当我导航回到FirstPage标题仍然是“ Title”,我该如何更改?

编辑 App.xaml.cs

namespace Test
{
    public partial class App : Application
        {
        public static int _ItemId { get; set; }

        public App()
        {
        InitializeComponent();

        MainPage = new NavigationPage(new FirstPage());
        }
    }
}

FirstPage.xaml.cs

private async void BtnSecoundPage_Clicked(object sender, EventArgs e)
{
    await Navigation.PushAsync(new SecoundPage());
}

SecoundPage.xaml.cs(具有ListView)

private void LVCustomerList_ItemSelected(object sender, SelectedItemChangedEventArgs e)
{
    var selectedItem = e.SelectedItem as Items; //Item Model

    App._ItemId = selectedItem.ID;
    Navigation.PopAsync();
}

1 个答案:

答案 0 :(得分:1)

您需要正确设置绑定。

在XAML中,确保为标题设置了绑定...

<?xml version="1.0" encoding="UTF-8"?>
<ContentPage 
    xmlns="http://xamarin.com/schemas/2014/forms" 
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
    x:Class="PlaypenApp.TestPage"
    Title="{Binding Title}">

</ContentPage>

...然后在您的代码隐藏中(如果您正在使用的是),您需要确保设置页面的绑定上下文...

this.BindingContext = this;

...将上面的代码行放在对InitializeComponent()的调用之前

现在将属性添加到页面中,这将取代您对App._variable的使用...

private string _title;
public string Title
{
    get { return _title; }
    set { _title = value; OnPropertyChanged(); }
}

...然后要全部测试,请使用此代码(其中包含我上面指定的一些代码)...

public TestPage()
{
    this.BindingContext = this;

    Title = "Old Title";

    InitializeComponent();

    Device.BeginInvokeOnMainThread(async () =>
    {
        await Task.Delay(2000);

        Title = "New Title";
    });
}

2秒后,页面上的标题应更改。

我希望对您有用。让我知道你的情况。