将值从单选按钮组传递到另一个页面 (Windows Phone)
本文关键字:Windows Phone 另一个 单选按钮 | 更新日期: 2023-09-27 18:31:11
我有TestPage.xaml,我在其中运行一个带有问题的测试。我设置了 maxCount=10,所以当我有十个问题时,测试结束。我想制作一个带有 3 个单选按钮 10、15、20 的 settingsPage.xaml,因此当用户选中其中一个按钮以设置 maxCount 时,它将存储在隔离存储设置中。但是我不知道如何在我的TestPage.xaml中检查单击了哪个单选按钮,以了解要加载多少问题?
如果没有 If-Else 语句,我如何实现这一点?
可以使用查询字符串。当您导航到最大计数值TestPage.xaml
传递时
NavigationService.Navigate(new Uri("/TestPage.xaml?maxcount=" + maxCount, UriKind.Relative));
在TestPage.xaml
页中,重写 OnNavigatedTo
方法并检查传递的查询字符串值。
protected override void OnNavigatedTo(NavigationEventArgs e)
{
string maxCount = string.Empty;
if (NavigationContext.QueryString.TryGetValue("maxcount", out maxCount))
{
//parse the int value from the string or whatever you need to do
}
}
或者,你说你已将其存储在独立存储中,因此您也可以从中读回它。查询字符串方法会更快,但如果用户已关闭应用,则独立存储方法将允许你稍后读回它。
根据评论进行更新
可以将包含数据的文件存储在独立存储中(应添加错误处理)
using(var fs = IsolatedStorageFile.GetUserStoreForApplication())
using(var isf = new IsolatedStorageFileStream("maxCount.txt", FileMode.OpenOrCreate, fs))
using(var sw = new StreamWriter(isf))
{
sw.WriteLine(maxCount.ToString());
}
然后读回来
using(var fs = IsolatedStorageFile.GetUserStoreForApplication())
using(var isf = new IsolatedStorageFileStream("maxCount.txt", FileMode.Open, fs))
using(var sr = new StreamReader(isf)
{
string maxCount = sr.ReadToEnd();
//you now have the maxCount value as string
//...
}
请参阅独立存储的缺点,即使您不运行该应用程序,它也会占用内存空间。因此,当应用程序运行时,为什么不继续将选项保存在Application.Current.Resources
例如:
Application.Current.Resources.Add("Maybe Question section", 50); //will load 50 questions for particular section.
和获取时
Application.Current.Resources["Maybe Question section"]
然后将其tryParse
为整数并获取数字。 这将是应用程序范围的,直到应用程序运行。您可以每次获取特定部分。无需一次又一次地连接到独立存储来获取或不断修改文件。