У меня есть графический интерфейс WPF, который позволяет пользователю открывать меню опций. Меню параметров открывается в новом окне и заполняется флажками. Когда пользователь нажимает кнопку «ok», окно закрывается. Тем не менее, он не помнит, какие флажки были проверены, когда он открывается. Как я могу убедиться, что программа может помнить, какие флажки были отмечены, а какие нет?Сохранение состояния дочерних окон в WPF C#
Просто для указания: мне нужно только помнить, какие поля проверяются во время запуска программы. Программу не нужно запоминать после завершения всей программы.
Спасибо!
Вот мой код под главным окном Window1.XAML.CS:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace CartToolsPrototype1
{
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
//Exit
private void Exit_Click(object sender, RoutedEventArgs e)
{
System.Environment.Exit(0);
}
//Options
private void Options_Click(object sender, RoutedEventArgs e)
{
var newWindow = new Options();
newWindow.Show();
}
}
}
Вот мой код под Options.XAML.CS дочернего окна. Это основано на первом ответе. Я прочитал link, который вы опубликовали, и это имеет смысл. У меня есть условия в моем файле настроек, которые я изменяю, когда пользователь проверяет мои флажки. Я тогда условие, определяющее, проверяется ли окно на основе файла параметров, но это, кажется, не отражает каких-либо изменений ...
public partial class Options_Window : Window
{
public Options_Window()
{
InitializeComponent();
//Checkbox1
if (Properties.Settings.Default.OptionsBox1 == true)
checkBox1.IsChecked = true;
else
checkBox1.IsChecked = false;
}
//Close Window
private void button1_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
//Ask before downloading... - CHECKED
private void checkBox1_Checked(object sender, RoutedEventArgs e)
{
Properties.Settings.Default.OptionsBox1 = true;
}
//Ask before downloading... - UNCHECKED
private void checkBox1_Unchecked(object sender, RoutedEventArgs e)
{
Properties.Settings.Default.OptionsBox1 = false;
}
Рассматривали ли вы привязку флажков к свойствам bool в ViewModel? Если вы имеете в виду закрытие главного окна, вам нужно будет каким-то образом сохранить эти состояния; возможно, файл xml. – Killingsworth
Чтобы быть понятным, пытаетесь ли вы сохранить это постоянное даже после перезапуска всей вашей программы? Если это так, я бы сохранил его в файле XML в папке APPDATA. – Alex
Только во время запуска программы. Если пользователь снова откроет окно параметров, я бы хотел, чтобы эти же флажки были отмечены. –