将值从单选按钮组传递到另一个页面 (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 语句,我如何实现这一点?

将值从单选按钮组传递到另一个页面 (Windows Phone)

可以使用查询字符串。当您导航到最大计数值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为整数并获取数字。 这将是应用程序范围的,直到应用程序运行。您可以每次获取特定部分。无需一次又一次地连接到独立存储来获取或不断修改文件。