为啥我更改的字符串没有出现在使用选项卡式表单 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" />

我从&lt;Entry/&gt; 获取字符串并将这个字符串设置到另一个页面。

我的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];
    

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

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

&lt;Entry/&gt;字段中的字符串更改时,是否有一个选项也可以在相应页面中更改?

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

 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 的其他页面上的主要内容,如果未能解决你的问题,请参考以下文章

jQuery Validate 不适用于 Bootstrap 3 选项卡式表单

更改选项卡式视图 SwiftUI 的凹槽区域背景颜色

更改选项卡式视图栏颜色 SwiftUI

Kivy 选项卡式面板不会更改背景颜色

HTML 选项卡式表单滑动

如何在 Xamarin Forms 中更改选项卡式页面指示器的颜色