在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();
}
答案 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秒后,页面上的标题应更改。
我希望对您有用。让我知道你的情况。