如何将文本框文本数据传输到另一个页面?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 ));
}
在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;