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

时间:2013-09-12 21:54:12

标签: c# windows-phone-7 windows-phone-8 radio-button

我有TestPage.xaml,我在其中运行带有问题的测试。我设置了maxCount = 10,所以当我有十个问题时,测试结束。我想创建一个带有3个单选按钮10,15,20的settingPage.xaml,因此当用户选中其中一个来设置maxCount时,它将存储在IsolatedStorageSettings中。但我无法弄清楚如何检查我的TestPage.xaml点击了哪个radiobutton,知道要加载多少个问题?

如果没有If-Else语句,我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:0)

您可以使用查询字符串。当您导航到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
   //... 
}

答案 1 :(得分:0)

请参见此处使用隔离存储,即使您未运行应用程序也会占用内存空间。因此,当应用程序运行时,为什么不继续保存您的选项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转换为整数并获取数字。这将是应用程序范围,直到应用程序运行。您可以每次获取特定部分。无需一次又一次地连接到隔离存储器以获取或继续修改文件。