作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在尝试将复选框的状态(选中/未选中)保存到我的现代 UI 应用程序的 ApplicationData 的 LocalSettings。在过去的 6-7 个小时里,我一直在研究这个问题,尝试了很多不同的方法,但我相信我现在已经完全迷失在自己的代码中了。到目前为止我的代码:
void MainPage_Loaded(object sender, RoutedEventArgs e)
{
if (localSettings.Values.ContainsKey("isFirstChecked") == false || cbFirst.IsChecked == false)
{
cbFirst.IsChecked = false;
test.Text = "UnChecked";
}
else
{
cbFirst.IsChecked = true;
test.Text = "Checked";
}
}
private void cbFirst_Checked(object sender, RoutedEventArgs e)
{
test.Text = "Checked";
localSettings.Values["isFirstChecked"] = cbFirst.IsChecked = true;
}
private void cbFirst_Unchecked(object sender, RoutedEventArgs e)
{
test.Text = "UnChecked";
var test2 = localSettings.Values["isFirstChecked"] = cbFirst.IsChecked = false;
}
就像我已经说过的,我已经尝试了几种方法来解决这个问题,但是没有一种方法能够真正保存两种状态,只有一种(我希望你们中的一些人可能知道为什么,因为我我现在迷路了)。
出于某种原因,当我调试时,即使复选框未选中,“已选中”代码也会被触发。
最佳答案
您的初始代码的问题在于您正在检查您的条件中的不同内容。您正在检查您存储的设置是否存在,然后检查复选框是否被选中。您当前没有做的是获取设置值(如果存在)。在加载时尝试以下操作。
void MainPage_Loaded(object sender, RoutedEventArgs e)
{
bool valueFromSettings = false;
if (!localSettings.Values.ContainsKey("isFirstChecked"))
{
// if the setting doesn't exist, probably wise to create it here.
// setting the default to "false", but you can change to true if that makes more sense.
localSettings.Values.Add("isFirstChecked", false);
}
else
{
// read the value of the setting here.
// If we just created it, it should default to false (see above)
valueFromSetting = ((bool)localSettings.Values["isFirstChecked"]);
}
if(valueFromSettings)
{
cbFirst.IsChecked = true;
test.Text = "Checked";
}
else
{
cbFirst.IsChecked = false;
test.Text = "UnChecked";
}
}
然后,您可以使用您之前定义的处理程序(但请注意细微的变化 - 您不需要检查复选框的值,但可以直接分配设置。)
private void cbFirst_Checked(object sender, RoutedEventArgs e)
{
test.Text = "Checked";
localSettings.Values["isFirstChecked"] = true;
}
private void cbFirst_Unchecked(object sender, RoutedEventArgs e)
{
test.Text = "UnChecked";
localSettings.Values["isFirstChecked"] = false;
}
关于c# - 将复选框状态保存到本地设置,windows 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14090410/
我是一名优秀的程序员,十分优秀!