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

amrnrhlw  于 2023-02-05  发布在  其他
关注(0)|答案(4)|浏览(228)

我正在将一个程序从WinForms转换到WPF。似乎有很多不必要的语法更改。但我遇到的麻烦是将“选中”或“未选中”状态保存到Propertys.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();
    }

我没有收到任何错误,但是当我取消选中复选框时,设置没有更改。请帮助。我做错了什么。
谢谢

4zcjmb1e

4zcjmb1e1#

每次使用不同的表达式,在checked事件中使用chkBackup.IsChecked == true,如果复选框被选中,则chkBackup.IsChecked == true的值为true,否则为false。
在unchecked事件中,您使用的是chkBackup.IsChecked == false,如果未选中复选框,则chkBackup.IsChecked == false的计算结果为true,否则为false。
您感兴趣的是是否选中了该框。用于此的表达式是chkBackup.IsChecked == true。您当前的解决方案将始终保存true

p8ekf7hl

p8ekf7hl2#

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

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

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

iqxoj9l93#

你的代码看起来很好。你在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();
}
u5i3ibmn

u5i3ibmn4#

我发现,在WPF中你可以使用字符串来保存一个值。这很不方便,但是它很有效。:/

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

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

要检查是否选中,可以使用

if (Properties.Settings.Default.Backup == "false") 
{
    //enter code here
}

相关问题