从窗口返回值到WPF类

时间:2018-11-20 02:04:35

标签: c# wpf return-value

在我班上的一个方法中,我叫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 :(得分:2)

您可以调用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;