为啥我更改的字符串没有出现在使用选项卡式表单 xamarin 的其他页面上
Posted
技术标签:
【中文标题】为啥我更改的字符串没有出现在使用选项卡式表单 xamarin 的其他页面上【英文标题】:Why doesn't my changed string appear on the other page using tabbed forms xamarin为什么我更改的字符串没有出现在使用选项卡式表单 xamarin 的其他页面上 【发布时间】:2021-07-31 23:51:19 【问题描述】:我的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();
我附上了一个屏幕截图,其中我按下按钮并打印“莫斯科”(默认设置),然后我将字符串更改为“旧金山”并再次按下按钮,但没有打印字符串?
【问题讨论】:
因为当文本发生变化时您没有做任何事情来更新文本。您在页面构造函数中设置文本,然后从不更新它。如果您想在每次页面出现时检查,请尝试将该代码添加到 OnAppearing() 中 请发表您的评论,如答案我会接受您的代码!谢谢。 【参考方案1】:你没有做任何事情来刷新文本。您只是在构造函数中调用它并且从不更新它
public Favorites()
InitializeComponent();
NavigationPage.SetHasNavigationBar(this, false);
FavoriteCities();
如果您想在每次页面出现时调用它,请尝试使用OnAppearing
public void override OnAppearing()
FavoriteCities();
【讨论】:
以上是关于为啥我更改的字符串没有出现在使用选项卡式表单 xamarin 的其他页面上的主要内容,如果未能解决你的问题,请参考以下文章