繁体   English   中英

使用 WPF 时,如何将选中的属性 state 保存到 Properties.Settings?

[英]How do I save the Checked property state to Properties.Settings When using WPF?

我正在将程序从 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();
    }

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

谢谢

您每次都使用不同的表达方式。 在选中的事件中,您使用chkBackup.IsChecked == true如果选中该框,则计算结果为 true,否则为 false。

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

您感兴趣的是该框是否被选中。 用于此的表达式是chkBackup.IsChecked == true 您当前的解决方案将始终保存true

您正在正确使用设置 object(来自您提供的代码),因此您可能需要附加 Checked/Unchecked 事件处理程序....( 此处为 MSDN

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

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

你的代码看起来不错。 您是否在 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();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM