Возвращение значения из окна в класс WPF - PullRequest
0 голосов
/ 20 ноября 2018

Внутри метода в моем классе я вызываю Login.Show(), то есть Login Window. Я хотел бы, чтобы окно передавало письмо обратно классу при нажатии кнопки «Вход», не создавая новый экземпляр класса.

Есть ли способ сделать это?

В настоящее время у меня есть

Login loginWindow;
public void AppStartup {
    loginWindow = new Login();
    loginWindow.Show();
    //in this instance I'd like the email to be returned here

В пределах Login.xaml.cs

public void Login_Click(object sender, RoutedEventArgs e)
{
    string email;
    try {
        email = InputEmail.Text;
        //ideally I would like to return email to AppStartup without
        //using new AppStartup(); , rather back in the same instance
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message); 
    }
}

1 Ответ

0 голосов
/ 20 ноября 2018

Вы можете вызвать ShowDialog() вместо Show(), чтобы отобразить окно, а затем напрямую получить доступ к свойству Text элемента управления InputEmail:

loginWindow = new Login();
loginWindow.ShowDialog();
string email = loginWindow.InputEmail.Text;

В отличие от Show(), ShowDialog() не вернется, пока окно не будет закрыто.

Или вы можете добавить свойство в окно Login или его DataContext и установить его при нажатии кнопки.

public string Email { get; set; }

public void Login_Click(object sender, RoutedEventArgs e)
{
    Email = InputEmail.Text;
}

string email = loginWindow.Email;
...