C# 将值从窗口返回到类WPF
在类中的一个方法中,我调用C# 将值从窗口返回到类WPF,c#,wpf,return-value,C#,Wpf,Return Value,在类中的一个方法中,我调用Login.Show(),这是一个登录窗口。我希望窗口在单击登录按钮时将电子邮件传递回类,而不创建类的新实例 有没有办法做到这一点 目前我有 Login loginWindow; public void AppStartup { loginWindow = new Login(); loginWindow.Show(); //in this instance I'd like the email to be returned here 在Log
Login.Show()
,这是一个登录窗口。我希望窗口在单击登录按钮时将电子邮件传递回类,而不创建类的新实例
有没有办法做到这一点
目前我有
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);
}
}
您可以调用ShowDialog()
而不是Show()
来显示窗口,然后直接访问InputEmail
控件的Text
属性:
loginWindow = new Login();
loginWindow.ShowDialog();
string email = loginWindow.InputEmail.Text;
与Show()
不同,ShowDialog()
在窗口关闭之前不会返回
或者,您可以将属性添加到登录
窗口或其数据上下文
,并在单击按钮时设置此属性
public string Email { get; set; }
public void Login_Click(object sender, RoutedEventArgs e)
{
Email = InputEmail.Text;
}
我会阅读WPF的mvvm
&binding
,只需向LoginWindow类添加一个公共属性,并在Login\u Click Handler中设置它,您知道,使用Console.WriteLine(例如Message)是很棘手的来自WPF(甚至WinForms)应用程序的代码>方法?您可能希望使用ShowDialog()
而不是Show()
。然后你可以在通话后访问成员变量@Jon suggest。我试过了,但它似乎不起作用,它不会等待登录。\u单击,所以“email”值始终为零。是否需要使用while循环并等待触发登录单击?您需要调用ShowDialog()
,而不是Show()
。你真的尝试过这个吗?是的,但它会立即通过showdialog和email=window.email运行,因此它永远不会给它更新的机会,就像在等待登录单击发生一样。我几乎需要它像等待登录点击?这有意义吗?没有,ShowDialog
在关闭loginWindow
之前不会返回。你不能在窗口关闭后单击按钮…它需要在调用ShowDialog的方法继续下一行之前关闭…如果你不想这样做,你可以从登录窗口引发事件,并在你的应用程序类中处理。
string email = loginWindow.Email;