为什么我更改的字符串没有出现在使用选项卡式表单 xamarin 的另一页上

Why doesn't my changed string appear on the other page using tabbed forms xamarin

我的 WeatherPage.xaml

中有 <Entry/> 字段,默认设置了文本
<Entry x:Name="_cityEntry"
       Grid.Row="1" 
       Grid.Column="1"
       Margin="5,0"
       VerticalOptions="Center"
       BackgroundColor="Black"
       TextColor="White"
       Opacity="0.7"
       Text="Moscow" />

我从 <Entry/> 获取字符串并将此字符串设置到另一个页面。

我的WeatherPage.xaml.cs代码:

void OnGetFavorites(System.Object sender, System.EventArgs e)
    {
        Preferences.Set("cityName", _cityEntry.Text);
        var tabbedPage = this.Parent.Parent as TabbedPage;
        tabbedPage.CurrentPage = tabbedPage.Children[2];
    }

当我第一次加载应用程序时按下按钮,它会将我重定向到相应的页面,我会看到默认设置的字符串。

当我在 <Entry/> 字段中写入其他内容并再次按下按钮时,逻辑将我重定向回相应的页面,但字符串没有改变。

<Entry/> 字段中的字符串更改后,是否可以选择在相应页面中也进行更改?

打印字符串的页面如下所示:

 public partial class Favorites : ContentPage
{
    public Favorites()
    {
        InitializeComponent();
        NavigationPage.SetHasNavigationBar(this, false);

        FavoriteCities();
    }
    private void FavoriteCities()
    {
        string cityName = Preferences.Get("cityName", "default_value");
        FavoriteCity.Text = cityName.ToString();
    }
}

我附上了一张屏幕截图,其中我按下按钮并打印了“Moscow”(因为它是默认设置的),然后我将字符串更改为“San Francisco”并再次按下按钮,但字符串不是打印 ?

您没有执行任何刷新文本的操作。您只是在构造函数中调用它而从不更新它

public Favorites()
{
    InitializeComponent();
    NavigationPage.SetHasNavigationBar(this, false);

    FavoriteCities();
}

如果您想在每次页面出现时调用它,请尝试使用OnAppearing

public void override OnAppearing()
{
    FavoriteCities();
}