Сдвиг информации при открытом окне - PullRequest
0 голосов
/ 12 июля 2020

Я хочу заменить переменные из одного окна в другое, чтобы создать объект. Это мой класс publi c:

public class Food
{
    public string Name { get; set; }
    public string Description { get; set; }
    public double Price { get; set; }

    public Food(string name, string description, int price)
    {
        Name = name;
        Description = description;
        Price = price;
    }
}

Это мой код главного окна:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void buttonNext_Click(object sender, RoutedEventArgs e)
    {
        NewWindow newWindow = new NewWindow();
        newWindow.Show();
        this.Close();
    }
}

И это мой код нового окна:

public partial class NewWindow : Window
{
    MainWindow mainWindow = new MainWindow();
    Food _food;       
    public NewWindow()
    {
        InitializeComponent();

        string name = mainWindow.comboMenu.Text;
        string description = mainWindow.textDescription.Text;
        int price = int.Parse(mainWindow.textPrice.Text);

        _food = new Food(name, description, price);
    }
}

Проблема заключается в том, что имя, описание и цена в главном окне меняются из-за выбора пользователя, щелкнувшего интерфейс. Но новое окно принимает информацию, которая появляется в главном окне, когда программа начинает работать, и не обращает внимания на выбор пользователя. Поэтому мне нужно установить переменные в новом окне при его открытии. Или когда событие нажатия кнопки «Далее» в главном окне вызывается из нового окна. Посоветуйте, пожалуйста, более простой способ сделать это. Основная идея - вывести информацию из главного окна в новое окно, когда первое закрывается и открывается новое.

1 Ответ

0 голосов
/ 12 июля 2020

Вы можете создать экземпляр типа Food в главном окне и передать его в новое окно Примерно так. Если требуется ссылка на главное окно, то даже это можно передать в конструктор.

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void buttonNext_Click(object sender, RoutedEventArgs e)
    {
        string name = comboMenu.Text;
        string description = textDescription.Text;
        int price = int.Parse(textPrice.Text);

        NewWindow newWindow = new NewWindow(new Food(name, description, price));
        newWindow.Show();
        this.Close();
    }
}

public partial class NewWindow : Window
{
    //MainWindow mainWindow = new MainWindow();
    Food _food;       
    public NewWindow(Food food)
        {
        _food = food;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...