我目前有一个符合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;
}
但它似乎不起作用,我再次寻求帮助。
答案 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页面的状态,事实上在大多数情况下,每页只需要两行代码。