在Windows Phone中动态存储和传递数据

时间:2013-12-05 04:50:51

标签: windows-phone-7 windows-phone windows-phone-8-emulator

我有一个“设置页面”,它将保存用户的值以供进一步使用。如果用户设置此值,则此值将用于主页面。首先在主页面中检查用户是否设置或更改以前保存的值。如果更改则使用当前值,否则将使用先前的已结算值。 我使用了Application.Current.Resources。 但我发现如果我的应用程序再次重启,则该值将丢失。 我需要的是,从设置页面将保存一个名为noOfWordsForLearning(例如)的值,以便随时可以从任何页面访问它。如果值随时更改,则其他页面可以获取更改的值。我试过这样的。 在设置页面中:

 Application.Current.Resources.Add("savedNoOfWords",noOfWordsForLearning);

在主页:

 if (Application.Current.Resources.Contains("savedNoOfWords"))
        {
            getSavedValueFromSetting = (int)Application.Current.Resources["savedNoOfWords"];
            MessageBox.Show("no of saved words is " + getSavedValueFromSetting);
        }
        else
            MessageBox.Show("no of default words is "+getSavedValueFromSetting);

我该怎么做?

1 个答案:

答案 0 :(得分:0)

我不知道是否有任何性能问题或其他问题,但如果你想避免阅读和我经常写信给IsolatedStorage,这就是我要做的事情:

//In App.xaml.cs
//Point no 1
private void Application_Launching(object sender, LaunchingEventArgs e)
{
    object noOfWordsForLearning;
    IsolatedStorageSettings.ApplicationSettings.TryGetValue("savedNoOfWords", out noOfWordsForLearning);
    if (noOfWordsForLearning != null)
    {
         Application.Current.Resources["savedNoOfWords"] = noOfWordsForLearning;
    }
}

//Point no 2
private void Application_Closing(object sender, ClosingEventArgs e)
{
    IsolatedStorageSettings.ApplicationSettings["savedNoOfWords"] = noOfWordsForLearning;
}
  1. 在启动应用程序时将值从IsoStorage加载到Application.Current.Resources
  2. 在应用程序关闭之前将Application.Current.Resources中的设置值存储到IsoStorage
  3. 在应用程序运行期间,仅对Application.Current.Resources
  4. 进行读写设置

    遵循这些步骤的另一个好处是:您现有的代码(仅读取并保存到Application.Current.Resources)将保持不变。您只需添加代码即可完成第1点和第1点的操作。我希望这有帮助,欢呼。