在我班上的一个方法中,我叫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);
}
}
答案 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;