如何将Checked属性状态保存到Properties.Settings使用WPF时?

时间:2011-08-11 23:01:10

标签: c# wpf visual-studio-2010

我正在将程序从WinForms转换为WPF。似乎有很多不必要的语法更改。但我遇到的问题是将“已检查”或“未选中”状态保存到Properties.Settings。在WinForms中,我使用了:

    private void chkBackup_CheckedChanged(object sender, EventArgs e)
    {
        Properties.Settings.Default.Backup = chkBackup.Checked;
        Properties.Settings.Default.Save();
    }

在WPF中似乎没有“CheckedChanged”的事件,所以我正在尝试:

    private void chkBackup_Checked(object sender, RoutedEventArgs e)
    {
        Properties.Settings.Default.Backup = (chkBackup.IsChecked == true);
        Properties.Settings.Default.Save();
    }

    private void chkBackup_Unchecked(object sender, RoutedEventArgs e)
    {
        Properties.Settings.Default.Backup = (chkBackup.IsChecked == false);
        Properties.Settings.Default.Save();
    }

我没有遇到任何错误,但是当我取消选中checkBox时,设置不会更改。请帮忙。我究竟做错了什么。

由于

3 个答案:

答案 0 :(得分:4)

每次都使用不同的表达方式。在已检查的事件中,您正在使用chkBackup.IsChecked == true,如果选中此框则评估为true,否则为false。

在未经检查的事件中,您正在使用chkBackup.IsChecked == false,如果未选中该框,则评估为true,否则为false。

如果选中此复选框,您感兴趣的是什么。用于此的表达式为chkBackup.IsChecked == true。您当前的解决方案将始终保存true

答案 1 :(得分:0)

您正在使用Settings对象(来自您提供的代码),因此您可能需要附加Checked / Unchecked事件处理程序....(MSDN here

<!-- in your xaml -->    
<CheckBox Checked="OnChecked" Unchecked="OnUnchecked"/>

//in your code-behind....
myCheckbox.OnChecked += myHandler;

答案 2 :(得分:0)

您的代码看起来很好。你在XAML中挂钩你的处理程序吗?

<CheckBox Name="chkbox"
          Content="Some Checkbox"
          Checked="chkBackup_Checked"
          Unchecked="chkBackup_Unchecked" />

如果你希望它更精简,你可以这样做:

<CheckBox Name="chkbox"
          Content="Some Checkbox"
          Checked="chkBackup_CheckChanged"
          Unchecked="chkBackup_CheckChanged" />


private void chkBackup_CheckChanged(object sender, RoutedEventArgs e)
{
    Properties.Settings.Default.Backup = chkBackup.IsChecked;
    Properties.Settings.Default.Save();
}