从另一个页面读取IsolatedStorage中的设置

本文关键字:设置 IsolatedStorage 读取 另一个 | 更新日期: 2023-09-27 18:14:33

很简单的问题,以前问过,但是没有人给我正确的答案,所以我要非常具体。

我需要在Windows Phone中读取IsolatedStorage的两个设置。设置为:ExitAlertOrientationLock。我已经设置好了设置,它们保存得很好,我只需要知道如何从另一页读取它们。设置变量的页面是Settings.cs,我需要从MainPage.xaml.cs读取设置。我还需要知道如何只做一些事情,如果变量是真或假。我想我应该用if-then-else语句,但我只是想再检查一下。

我的应用程序是用c#编写的。这是我用来存储设置的代码:

using System;
using System.IO.IsolatedStorage;
using System.Diagnostics;
namespace Google_
{
    public class AppSettings
    {
        IsolatedStorageSettings isolatedStore;
        // isolated storage key names
        const string ExitWarningKeyName = "ExitWarning";
        const string OrientationLockKeyName = "OrientationLock";
        // default values
        const bool ExitWarningDefault = true;
        const bool OrientationLockDefault = false;
        public AppSettings()
        {
            try
            {
                // Get the settings for this application.
                isolatedStore = IsolatedStorageSettings.ApplicationSettings;
            }
            catch (Exception e)
            {
                Debug.WriteLine("Exception while using IsolatedStorageSettings: " + e.ToString());
            }
        }

        public bool AddOrUpdateValue(string Key, Object value)
        {
            bool valueChanged = false;
            // If the key exists
            if (isolatedStore.Contains(Key))
            {
                // If the value has changed
                if (isolatedStore[Key] != value)
                {
                    // Store the new value
                    isolatedStore[Key] = value;
                    valueChanged = true;
                }
            }
            // Otherwise create the key.
            else
            {
                isolatedStore.Add(Key, value);
                valueChanged = true;
            }
            return valueChanged;
        }
        public valueType GetValueOrDefault<valueType>(string Key, valueType defaultValue)
        {
            valueType value;
            // If the key exists, retrieve the value.
            if (isolatedStore.Contains(Key))
            {
                value = (valueType)isolatedStore[Key];
            }
            // Otherwise, use the default value.
            else
            {
                value = defaultValue;
            }
            return value;
        }
        public void Save()
        {
            isolatedStore.Save();
        }
        public bool ExitWarning
        {
            get
            {
                return GetValueOrDefault<bool>(ExitWarningKeyName, ExitWarningDefault);
            }
            set
            {
                AddOrUpdateValue(ExitWarningKeyName, value);
                Save();
            }
        }
        public bool OrientationLock
        {
            get
            {
                return GetValueOrDefault<bool>(ExitWarningKeyName, OrientationLockDefault);
            }
            set
            {
                AddOrUpdateValue(OrientationLockKeyName, value);
                Save();
            }
        }
    }
}

如果有什么不清楚的,请告诉我,以便我进一步解释。谢谢。

从另一个页面读取IsolatedStorage中的设置

我要做的是将以下内容添加到我的AppSettings类中:

private static AppSettings _default = new AppSettings();
/// <summary>
/// Gets the default instance of the settings
/// </summary>
public static AppSettings Default
{
    get
    {
        return _default; 
    }
}

那么你可以直接使用AppSettings。项目中任何地方的默认值:

if (AppSettings.Default.ExitWarning)
{
}
else
{
}

如果您需要更多的信息,请告诉我。

您还可以使用PhoneApplicationService.Current.State[]来存储应用程序范围的设置。它们可以从任何页面访问,您不需要单独的存储来存储它们。

的例子:

PhoneApplicationService.Current.State["ExitWarning"] = true;