Как сохранить состояние свойства Checked в Properties.Settings при использовании WPF? - PullRequest
1 голос
/ 12 августа 2011

Я конвертирую программу из WinForms в WPF.Кажется, есть много ненужных изменений синтаксиса.Но у меня возникли проблемы с сохранением статуса «проверено» или «не проверено» в Properties.Settings.В WinForms я использовал:

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

Кажется, что нет события "CheckedChanged" в WPF, поэтому я пытаюсь:

    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();
    }

Я не получаю ошибок сэто, но когда я снимаю флажок, настройки не изменяются.Пожалуйста помоги.Что я делаю неправильно.

Спасибо

Ответы [ 3 ]

4 голосов
/ 12 августа 2011

Вы используете разные выражения каждый раз.В отмеченном событии вы используете chkBackup.IsChecked == true, который оценивается как true, если флажок установлен, и ложь в противном случае.

В непроверенном событии вы используете chkBackup.IsChecked == false, который оценивается как true, если поле не установленоt флажок и false в противном случае.

То, что вас интересует, это если флажок установлен или нет.Выражение для использования это chkBackup.IsChecked == true.Ваше текущее решение всегда сэкономит true.

0 голосов
/ 12 августа 2011

Ваш код выглядит нормально. Вы подключаете свои обработчики в 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();
}
0 голосов
/ 12 августа 2011

вы используете объект «Настройки» правильно (из предоставленного вами кода), поэтому, возможно, вам нужно подключить обработчики событий Checked / Unchecked .... ( MSDN здесь )

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

//in your code-behind....
myCheckbox.OnChecked += myHandler;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...