复选框未保存状态

时间:2011-10-14 08:38:54

标签: c# silverlight windows-phone-7 location

我目前有一个符合MS位置服务规则的复选框,但在您重新访问该页面时似乎没有保存其状态。

代码如下:

private void cbLocationAllow_Checked(object sender, RoutedEventArgs e)
{
    var settings = IsolatedStorageSettings.ApplicationSettings;

    settings["allowLocation"] = true;
    settings.Save();

}

private void cbLocationAllow_Unchecked(object sender, RoutedEventArgs e)
{
    var settings = IsolatedStorageSettings.ApplicationSettings;

    settings["allowLocation"] = false;
    settings.Save();
}

我认为这会是......

   private void SaveState(CheckBox checkBox)
    {

        var settings = IsolatedStorageSettings.ApplicationSettings;

        if (settings.Contains("allowLocation"))
        {
            checkbox.isChecked == true;

        }

但它似乎不起作用,我再次寻求帮助。

3 个答案:

答案 0 :(得分:1)

我这样做的方法是创建一个设置类,并将控件绑定到settings类中的属性。对于简单的程序,即使对于那些不是真正“设置”的东西,我也使用这种方法,但只使用我需要保存的数据。在某些情况下,我有可能被其他页面更改的数据,因此对于可能在原始页面上没有更改的数据(在这种情况下NotifyChanged事件不会因为页面不在范围内而触发),我有后面的代码返回并检查保存的数据。

以下是类似于我使用的设置类的示例:

http://msdn.microsoft.com/en-us/library/ff769510%28v=VS.92%29.aspx

答案 1 :(得分:0)

我真的不明白这个问题。但如果你这样做,

 settings.Save();

然后保存设置。因此,如果您再次浏览该部分,只需将其加载即可。不要尝试更改复选框的isChecked功能。

或者您可以尝试将复选框的isChecked绑定到本地布尔变量。然后将其保存在您的数据库中。如果你再次加载它,你可以尝试在加载之前或加载时添加它。

 cbLocationAllow.IsChecked = settings["allowLocation"];

如果您还有其他需要,请告诉我。

答案 2 :(得分:-1)

尝试使用Mat laceys Tombstone助手,它可以很容易地保存所有Silverlight页面的状态,事实上在大多数情况下,每页只需要两行代码。

WP7 Tombstone helper