如何将文本框文本数据传输到另一个页面?Windows Phone 8.1

本文关键字:文本 Windows Phone 另一个 数据传输 | 更新日期: 2023-09-27 18:12:26

有两个页面在我的应用程序。第一个是MainPage和第二个是settingpage有一个文本框在我的设置页面。我想保存此文本框文本并发送到主页。

下面是新的示例。现在它的工作,但我不能保存textBox1。在SettingsPage中的文本。当我浏览其他页面时,它正在清理。

public sealed partial class MainPage : Page
{
    private NavigationHelper navigationHelper;
    public MainPage()
    {
        this.InitializeComponent();
        progRing.IsActive = true;
        Window.Current.SizeChanged += Current_SizeChanged;
        this.NavigationCacheMode = NavigationCacheMode.Required;
        this.navigationHelper = new NavigationHelper(this);
        this.navigationHelper.LoadState += this.NavigationHelper_LoadState;
    }
    public NavigationHelper NavigationHelper
    {
        get { return this.navigationHelper; }
    }
    private void NavigationHelper_LoadState(object sender, LoadStateEventArgs e)
    {
        this.txtBoxNotification.Text = (string)e.NavigationParameter;
    }
    private void btnNotification_Click(object sender, RoutedEventArgs e)
    {
        webView.Navigate(new Uri("http://teknoseyir.com/u/" + txtBoxNotification ));
    }

如何将文本框文本数据传输到另一个页面?Windows Phone 8.1

在WP8中发送页面间导航参数的标准方式是使用

NavigationService.Navigate(new Uri("/MainPage.xaml?text=" + textBox1.Text, UriKind.Relative));

然后在您导航到的页面上检查OnNavigatedTo()方法上的参数。

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    string settingsText = NavigationContext.QueryString["text"];
}

对于Windows Phone 8.1,您不再使用URI进行导航。方法是使用:

this.Frame.Navigate(typeof(MainPage), textBox1.Text);

然后在你要导航到的页面的loadstate上,你可以使用:

来获取数据
private async void navigationHelper_LoadState(object sender, LoadStateEventArgs e)
{
    string text = e.NavigationParameter as string;
}  

你也可以通过使用PhoneApplicationService来做到这一点。像这样设置一个值

string str = textBox.Text;
PhoneApplicationService.Current.State["TextBoxValue"] = str;

现在你可以在任何你想要的地方调用这个值。然后得到这样的值

textblock.Text = PhoneApplicationService.Current.State["TextBoxValue"] as String;

在Windows Phone 8.1中,您可以将值作为Frame的参数传输。导航方法。

例如,你想传输yourType的yourValue:

Frame.Navigate(typeof(TargetPage), yourValue); 

并把它放到目标页面:

protected async override void LoadState(Object navigationParameter, Dictionary<String, Object> pageState)
{
    var value = navigationParameter as yourType;
}

我使用的最简单的方法是在主页中声明一个公共静态类,这样你就可以在应用程序页面的任何地方使用相同的类方法,就像这样:

public static class MyClass
{
    public static string MyString = null;
}

那么你可以在设置页面的文本框中设置一个值,如下所示:

PhoneApp.MainPage.MyClass.MyString = TextBoxInSettings.Text;

然后将该值返回给主页面的另一个文本框,如下所示:

TextBoxInMainPage.Text = MyClass.MyString;