2011-10-14 44 views
0

我目前有一个复选框来遵守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; 

     } 

但它似乎没有工作,我正在寻找一些帮助,再次。

+4

checkbox.IsChecked ==真;没有做很多..双(==)是一个比较不是一个setter – Rob

+1

嗨Rhys,只是一个猜测,但逻辑看起来有点瑕疵,如果设置存在。那么你想要做这样的事情'checkbox.isChecked = Convert.ToBoolean(settings [“allowLocation”]);' – Sitnam

回答

1

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

这里的相似,我使用的设置类的一个实例:

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

+0

谢谢你。我最终变成了启用和禁用按钮,并使用settings.save()来启用和settings.remove(“allowLocation”)来禁用它,并且它在我的settings.contains(“allowLocation”)主页上正常工作。 – Rhys

0

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

settings.Save(); 

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

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

cbLocationAllow.IsChecked = settings["allowLocation"]; 

让我知道你是否需要别的东西。

+0

对不起,如果问题不明确。该设置保存到隔离存储的罚款,但当我回到复选框所在的设置时,该框恢复为未经检查的原始状态。它需要保留已检查的状态并允许取消选中并从隔离存储中删除允许位置。 Hopefulyl这使它更清晰一点。谢谢你的帮助。 – Rhys

-1

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

WP7 Tombstone helper

+0

我相信他正在寻找一种方式来存储状态渗透(IsolatedStorage)。 TomstoneHelper是一个令人难以置信的工具,但不适合这种情况。 –