Как перейти на другую форму и при возращении сохранить данные, которые были введены в TextBox

Я пишу программу по расширенному поиску в библиотеке, основная часть уже сделанная, но есть проблема. Проблема заключается в том, что при выборе книги и переходе на ее полное описание (ProductPage) и потом при возвращении обратно на главную страницу (MainWindow), данные которые я ввел в TextBox должны быть сохранены, это как на каком-нибудь сайте при возвращении обратно на страницу, но все что я не пробовал ничего не работает. Снизу будет код без моих попыток, так как я запутался и решил все вернуть назад. код страницы

Код страницы MainWindow.xaml.cs:

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Windows;
using System.Windows.Input;
using BibliographicSearch.Models;
 
namespace BibliographicSearch
{
    public partial class MainWindow : Window
    {
        private ObservableCollection<Works> requests;
        private LibraryEntities2 libraryEntities;
 
        public MainWindow()
        {
            InitializeComponent();
 
            // Инициализация базы данных
            libraryEntities = new LibraryEntities2();
 
            // Загрузка видов изданий в выпадающий список
            PublicationTypeComboBox.ItemsSource = libraryEntities.PublicationTypes.Select(p => p.PublicationTypeName).ToList();
 
            // Отображение всех книг при запуске программы
            DisplayAllBooks();
 
            // Добавление обработчика события для щелчка на элементе DataGrid
            BooksListBox.MouseDoubleClick += BooksListBox_MouseDoubleClick;
        }
 
 
        private void BooksListBox_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            // Получение выбранного произведения
            Works selectedWork = BooksListBox.SelectedItem as Works;
            if (selectedWork != null)
            {
                // Открытие нового окна с подробной информацией о произведении
                ShowWorkDetails(selectedWork);
            }
        }
        private void ShowWorkDetails(Works work)
        {
            // Получение выбранной книги
            Works selectedWork = BooksListBox.SelectedItem as Works;
            if (selectedWork != null)
            {
                // Переход на новую страницу с подробной информацией о книге
                MainFrame.Content = new ProductPage(selectedWork);
            }
        }
        private void DisplayAllBooks()
        {
            try
            {
                // Получение всех книг из базы данных
                var allBooks = libraryEntities.Works.ToList();
 
                // Отображение результатов в таблице
                BooksListBox.ItemsSource = allBooks;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Ошибка при загрузке всех книг: " + ex.Message);
            }
        }
 
        private void SearchButton_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                string author = AuthorTextBox.Text.Trim();
                string title = TitleTextBox.Text.Trim();
                string keywords = KeywordsTextBox.Text.Trim();
                string publicationType = PublicationTypeComboBox.SelectedItem as string;
                int fromYear = string.IsNullOrEmpty(FromYearTextBox.Text) ? 0 : int.Parse(FromYearTextBox.Text);
                int toYear = string.IsNullOrEmpty(ToYearTextBox.Text) ? int.MaxValue : int.Parse(ToYearTextBox.Text);
 
                // Выполнение запроса к базе данных
                var query = from work in libraryEntities.Works
                            where (string.IsNullOrEmpty(author) || work.AuthorName.Contains(author))
                                && (string.IsNullOrEmpty(title) || work.Title.Contains(title))
                                && (string.IsNullOrEmpty(keywords) || work.Keywords.Contains(keywords))
                                && (string.IsNullOrEmpty(publicationType) || work.PublicationTypeName == publicationType)
                                && (work.PublicationYear >= fromYear && work.PublicationYear <= toYear)
                            select work;
 
                // Проверка наличия результатов поиска
                if (query.Any())
                {
                    // Отображение результатов в таблице
                    BooksListBox.ItemsSource = query.ToList();
                }
                else
                {
                    MessageBox.Show("По вашему запросу ничего не найдено.");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Ошибка при выполнении поиска: " + ex.Message);
            }
        }
 
        private void SortButton_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                // Получение отсортированных результатов из таблицы данных
                var sortedResults = (BooksListBox.ItemsSource as IEnumerable<Works>)
                                    .OrderBy(w => w.Title)
                                    .ToList();
 
                // Обновление данных в таблице
                BooksListBox.ItemsSource = sortedResults;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Ошибка при сортировке: " + ex.Message);
            }
        }
    }
}

Код страницы ProductPage.xaml.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
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;
using BibliographicSearch.Models;
namespace BibliographicSearch
{
    /// <summary>
    /// Логика взаимодействия для ProductPage.xaml
    /// </summary>
    public partial class ProductPage : Page
    {
 
        public ProductPage(Works selectedWork)
        {
            InitializeComponent();
            DataContext = selectedWork;
 
        }
 
        private void BackButton_Click(object sender, RoutedEventArgs e)
        {
            // Создаем новый экземпляр MainWindow и отображаем его
            MainWindow mainWindow = new MainWindow();
            mainWindow.Show();
 
            // Закрываем текущее окно (ProductPage)
            Window.GetWindow(this).Close();
        }
 
 
    }
}

Ответы (0 шт):