c# - 如何从并使用 Xamarin 从一页到另一页显示此文本?
问题描述
我有两页:
WeatherPage.xaml
Favorites.xaml
WeatherPage.xaml
我在页面中还有一个“收藏夹”按钮。
我希望当用户WeatherPage.xaml
在<Entry/>
字段中写入内容并按下“收藏夹”按钮后,此文本应显示在另一页上Favorites.xaml
。
是否有一个选项可以让页面上传输的文本Favorites.xaml
即使在应用程序关闭时也保留在那里?
我没有数据库,我正在寻找如何将文本从一页移动到另一页并保存的示例。
我的代码WeatherPage.xaml
是:
<Entry x:Name="_cityEntry"
Grid.Row="1"
Grid.Column="1"
Margin="5,0"
VerticalOptions="Center"
BackgroundColor="Black"
TextColor="White"
Opacity="0.7"
Text="Moscow" />
<ImageButton Source="blackheart.png"
Grid.Row="1"
Grid.Column="3"
WidthRequest="40"
HeightRequest="40"
Opacity="0.7"
Clicked="OnGetFavorites"/>
在我WeatherPage.xaml.cs
的按钮方法中插入这行代码:
void OnGetFavorites(System.Object sender, System.EventArgs e)
{
Preferences.Set("cityName", _cityEntry.Text);
}
我的FavoritePage.xaml.cs
样子:
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Xamarin.Essentials;
using Xamarin.Forms;
namespace WeatherLocationInfo.Views
{
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();
}
}
}
当应用程序在页面上启动时,第一个输入的城市会从页面打印WeatherPage
到Favorites
页面,但是当它更改城市并再次单击按钮时,搜索栏的内容不会更新。
解决方案
即使应用程序在没有数据库的情况下关闭,存储数据的一种简单方法是将“_cityEntry 文本”存储为应用程序首选项。您可以直接使用Xamarin.Essentials: Preferences。
在中创建一个新的偏好键值对WeatherPage.xaml.cs
public partial class WeatherPage : ContentPage
{
public WeatherPage()
{
InitializeComponent();
}
private void OnGetFavorites(object sender, EventArgs e)
{
Preferences.Set("cityName", _cityEntry.Text);
Navigation.PushAsync(new FavoritePage());
}
}
获取 key cityName
in的值Favorites.xaml.cs
public partial class FavoritePage : ContentPage
{
public FavoritePage()
{
InitializeComponent();
NavigationPage.SetHasNavigationBar(this, false);
FavoriteCities();
}
private void FavoriteCities()
{
string cityName = Preferences.Get("cityName", "default_value");
FavoriteCity.Text = cityName.ToString();
}
}
此外,如果要将数据传递到已经创建的页面,可以使用MVVM并将城市名称存储在数据模型中。
推荐阅读
- ios - Dose Flutter 同时支持scenedelegate 和sirishortcut 吗?
- python - 应用程序工作时导入 Pycharm 错误
- python - OOP 形式的“模板”
- angular - Angular 英雄之旅
- css - react style-component styles not being applied
- java - App didn't work after adding firebase dependencies
- mysql - MYSQL Please help to Convert string (mm/dd/yyyy hh:mm) to datetime (yyyy-mm-dd hh:mm)
- r - Adding a vector to params in YAML header
- java - How to properly code this one to many relationship according to design
- javafx - 如何从用 Kotlin 编写的 gradle 项目创建 javaFX jar