Returning Value From Window To Class WPF
Within a method in my class I call Login.Show()
, which is a Login Window
. I would like the window to pass the email back to the class when the Login button is clicked, without creating a new instance of the class.
Is there any way to do this?
Currently I have
Login loginWindow;
public void AppStartup {
loginWindow = new Login();
loginWindow.Show();
//in this instance I'd like the email to be returned here
Within the 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);
}
}
c# wpf return-value
add a comment |
Within a method in my class I call Login.Show()
, which is a Login Window
. I would like the window to pass the email back to the class when the Login button is clicked, without creating a new instance of the class.
Is there any way to do this?
Currently I have
Login loginWindow;
public void AppStartup {
loginWindow = new Login();
loginWindow.Show();
//in this instance I'd like the email to be returned here
Within the 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);
}
}
c# wpf return-value
2
i would read up onmvvm
&binding
for wpf
– JohnB
Nov 20 '18 at 2:09
Just add a public property to the LoginWindow class and set it in the Login_Click handler
– Jon
Nov 20 '18 at 2:51
you know, that it is tricky to useConsole.WriteLine(ex.Message);
method from WPF (or even WinForms) application?
– vasily.sib
Nov 20 '18 at 3:14
You may want to useShowDialog()
instead ofShow()
. Then you can access the member variable @Jon suggest after the call.
– Klaus Gütter
Nov 20 '18 at 5:13
add a comment |
Within a method in my class I call Login.Show()
, which is a Login Window
. I would like the window to pass the email back to the class when the Login button is clicked, without creating a new instance of the class.
Is there any way to do this?
Currently I have
Login loginWindow;
public void AppStartup {
loginWindow = new Login();
loginWindow.Show();
//in this instance I'd like the email to be returned here
Within the 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);
}
}
c# wpf return-value
Within a method in my class I call Login.Show()
, which is a Login Window
. I would like the window to pass the email back to the class when the Login button is clicked, without creating a new instance of the class.
Is there any way to do this?
Currently I have
Login loginWindow;
public void AppStartup {
loginWindow = new Login();
loginWindow.Show();
//in this instance I'd like the email to be returned here
Within the 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);
}
}
c# wpf return-value
c# wpf return-value
asked Nov 20 '18 at 2:04
ExplorexExplorex
387
387
2
i would read up onmvvm
&binding
for wpf
– JohnB
Nov 20 '18 at 2:09
Just add a public property to the LoginWindow class and set it in the Login_Click handler
– Jon
Nov 20 '18 at 2:51
you know, that it is tricky to useConsole.WriteLine(ex.Message);
method from WPF (or even WinForms) application?
– vasily.sib
Nov 20 '18 at 3:14
You may want to useShowDialog()
instead ofShow()
. Then you can access the member variable @Jon suggest after the call.
– Klaus Gütter
Nov 20 '18 at 5:13
add a comment |
2
i would read up onmvvm
&binding
for wpf
– JohnB
Nov 20 '18 at 2:09
Just add a public property to the LoginWindow class and set it in the Login_Click handler
– Jon
Nov 20 '18 at 2:51
you know, that it is tricky to useConsole.WriteLine(ex.Message);
method from WPF (or even WinForms) application?
– vasily.sib
Nov 20 '18 at 3:14
You may want to useShowDialog()
instead ofShow()
. Then you can access the member variable @Jon suggest after the call.
– Klaus Gütter
Nov 20 '18 at 5:13
2
2
i would read up on
mvvm
& binding
for wpf– JohnB
Nov 20 '18 at 2:09
i would read up on
mvvm
& binding
for wpf– JohnB
Nov 20 '18 at 2:09
Just add a public property to the LoginWindow class and set it in the Login_Click handler
– Jon
Nov 20 '18 at 2:51
Just add a public property to the LoginWindow class and set it in the Login_Click handler
– Jon
Nov 20 '18 at 2:51
you know, that it is tricky to use
Console.WriteLine(ex.Message);
method from WPF (or even WinForms) application?– vasily.sib
Nov 20 '18 at 3:14
you know, that it is tricky to use
Console.WriteLine(ex.Message);
method from WPF (or even WinForms) application?– vasily.sib
Nov 20 '18 at 3:14
You may want to use
ShowDialog()
instead of Show()
. Then you can access the member variable @Jon suggest after the call.– Klaus Gütter
Nov 20 '18 at 5:13
You may want to use
ShowDialog()
instead of Show()
. Then you can access the member variable @Jon suggest after the call.– Klaus Gütter
Nov 20 '18 at 5:13
add a comment |
1 Answer
1
active
oldest
votes
You could call ShowDialog()
instead of Show()
to display the window and then access the Text
property of the InputEmail
control directly:
loginWindow = new Login();
loginWindow.ShowDialog();
string email = loginWindow.InputEmail.Text;
Unlike Show()
, ShowDialog()
won't return until the window has been closed.
Or you could add a property to the Login
window or its DataContext
, and set this one when the button is clicked.
public string Email { get; set; }
public void Login_Click(object sender, RoutedEventArgs e)
{
Email = InputEmail.Text;
}
string email = loginWindow.Email;
I tried that but it doesnt seem to work, it doesnt wait for Login_Click so 'email' value is always nothing. Do I need to use a while loop and wait for Login click to be triggered?
– Explorex
Nov 20 '18 at 11:06
You need to callShowDialog()
instead ofShow()
. Did you really try this?
– mm8
Nov 20 '18 at 12:05
Yes, but it runs through showdialog and email =window.email instantly and so it never gives it a chance to update, as in wait for login click to occur. I almost need it to be like await login click ? Does this make sense?
– Explorex
Nov 20 '18 at 12:12
No,ShowDialog
doesn't return untilloginWindow
has been closed. And you can't click on a button after a window has been closed...
– mm8
Nov 20 '18 at 12:17
1
It needs to close before the method that calls ShowDialog continues to the next line...if you don't want this you could raise an event from the login window and handle this in your app class.
– mm8
Nov 20 '18 at 12:35
|
show 1 more comment
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53385195%2freturning-value-from-window-to-class-wpf%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
You could call ShowDialog()
instead of Show()
to display the window and then access the Text
property of the InputEmail
control directly:
loginWindow = new Login();
loginWindow.ShowDialog();
string email = loginWindow.InputEmail.Text;
Unlike Show()
, ShowDialog()
won't return until the window has been closed.
Or you could add a property to the Login
window or its DataContext
, and set this one when the button is clicked.
public string Email { get; set; }
public void Login_Click(object sender, RoutedEventArgs e)
{
Email = InputEmail.Text;
}
string email = loginWindow.Email;
I tried that but it doesnt seem to work, it doesnt wait for Login_Click so 'email' value is always nothing. Do I need to use a while loop and wait for Login click to be triggered?
– Explorex
Nov 20 '18 at 11:06
You need to callShowDialog()
instead ofShow()
. Did you really try this?
– mm8
Nov 20 '18 at 12:05
Yes, but it runs through showdialog and email =window.email instantly and so it never gives it a chance to update, as in wait for login click to occur. I almost need it to be like await login click ? Does this make sense?
– Explorex
Nov 20 '18 at 12:12
No,ShowDialog
doesn't return untilloginWindow
has been closed. And you can't click on a button after a window has been closed...
– mm8
Nov 20 '18 at 12:17
1
It needs to close before the method that calls ShowDialog continues to the next line...if you don't want this you could raise an event from the login window and handle this in your app class.
– mm8
Nov 20 '18 at 12:35
|
show 1 more comment
You could call ShowDialog()
instead of Show()
to display the window and then access the Text
property of the InputEmail
control directly:
loginWindow = new Login();
loginWindow.ShowDialog();
string email = loginWindow.InputEmail.Text;
Unlike Show()
, ShowDialog()
won't return until the window has been closed.
Or you could add a property to the Login
window or its DataContext
, and set this one when the button is clicked.
public string Email { get; set; }
public void Login_Click(object sender, RoutedEventArgs e)
{
Email = InputEmail.Text;
}
string email = loginWindow.Email;
I tried that but it doesnt seem to work, it doesnt wait for Login_Click so 'email' value is always nothing. Do I need to use a while loop and wait for Login click to be triggered?
– Explorex
Nov 20 '18 at 11:06
You need to callShowDialog()
instead ofShow()
. Did you really try this?
– mm8
Nov 20 '18 at 12:05
Yes, but it runs through showdialog and email =window.email instantly and so it never gives it a chance to update, as in wait for login click to occur. I almost need it to be like await login click ? Does this make sense?
– Explorex
Nov 20 '18 at 12:12
No,ShowDialog
doesn't return untilloginWindow
has been closed. And you can't click on a button after a window has been closed...
– mm8
Nov 20 '18 at 12:17
1
It needs to close before the method that calls ShowDialog continues to the next line...if you don't want this you could raise an event from the login window and handle this in your app class.
– mm8
Nov 20 '18 at 12:35
|
show 1 more comment
You could call ShowDialog()
instead of Show()
to display the window and then access the Text
property of the InputEmail
control directly:
loginWindow = new Login();
loginWindow.ShowDialog();
string email = loginWindow.InputEmail.Text;
Unlike Show()
, ShowDialog()
won't return until the window has been closed.
Or you could add a property to the Login
window or its DataContext
, and set this one when the button is clicked.
public string Email { get; set; }
public void Login_Click(object sender, RoutedEventArgs e)
{
Email = InputEmail.Text;
}
string email = loginWindow.Email;
You could call ShowDialog()
instead of Show()
to display the window and then access the Text
property of the InputEmail
control directly:
loginWindow = new Login();
loginWindow.ShowDialog();
string email = loginWindow.InputEmail.Text;
Unlike Show()
, ShowDialog()
won't return until the window has been closed.
Or you could add a property to the Login
window or its DataContext
, and set this one when the button is clicked.
public string Email { get; set; }
public void Login_Click(object sender, RoutedEventArgs e)
{
Email = InputEmail.Text;
}
string email = loginWindow.Email;
answered Nov 20 '18 at 10:51
mm8mm8
82.4k81831
82.4k81831
I tried that but it doesnt seem to work, it doesnt wait for Login_Click so 'email' value is always nothing. Do I need to use a while loop and wait for Login click to be triggered?
– Explorex
Nov 20 '18 at 11:06
You need to callShowDialog()
instead ofShow()
. Did you really try this?
– mm8
Nov 20 '18 at 12:05
Yes, but it runs through showdialog and email =window.email instantly and so it never gives it a chance to update, as in wait for login click to occur. I almost need it to be like await login click ? Does this make sense?
– Explorex
Nov 20 '18 at 12:12
No,ShowDialog
doesn't return untilloginWindow
has been closed. And you can't click on a button after a window has been closed...
– mm8
Nov 20 '18 at 12:17
1
It needs to close before the method that calls ShowDialog continues to the next line...if you don't want this you could raise an event from the login window and handle this in your app class.
– mm8
Nov 20 '18 at 12:35
|
show 1 more comment
I tried that but it doesnt seem to work, it doesnt wait for Login_Click so 'email' value is always nothing. Do I need to use a while loop and wait for Login click to be triggered?
– Explorex
Nov 20 '18 at 11:06
You need to callShowDialog()
instead ofShow()
. Did you really try this?
– mm8
Nov 20 '18 at 12:05
Yes, but it runs through showdialog and email =window.email instantly and so it never gives it a chance to update, as in wait for login click to occur. I almost need it to be like await login click ? Does this make sense?
– Explorex
Nov 20 '18 at 12:12
No,ShowDialog
doesn't return untilloginWindow
has been closed. And you can't click on a button after a window has been closed...
– mm8
Nov 20 '18 at 12:17
1
It needs to close before the method that calls ShowDialog continues to the next line...if you don't want this you could raise an event from the login window and handle this in your app class.
– mm8
Nov 20 '18 at 12:35
I tried that but it doesnt seem to work, it doesnt wait for Login_Click so 'email' value is always nothing. Do I need to use a while loop and wait for Login click to be triggered?
– Explorex
Nov 20 '18 at 11:06
I tried that but it doesnt seem to work, it doesnt wait for Login_Click so 'email' value is always nothing. Do I need to use a while loop and wait for Login click to be triggered?
– Explorex
Nov 20 '18 at 11:06
You need to call
ShowDialog()
instead of Show()
. Did you really try this?– mm8
Nov 20 '18 at 12:05
You need to call
ShowDialog()
instead of Show()
. Did you really try this?– mm8
Nov 20 '18 at 12:05
Yes, but it runs through showdialog and email =window.email instantly and so it never gives it a chance to update, as in wait for login click to occur. I almost need it to be like await login click ? Does this make sense?
– Explorex
Nov 20 '18 at 12:12
Yes, but it runs through showdialog and email =window.email instantly and so it never gives it a chance to update, as in wait for login click to occur. I almost need it to be like await login click ? Does this make sense?
– Explorex
Nov 20 '18 at 12:12
No,
ShowDialog
doesn't return until loginWindow
has been closed. And you can't click on a button after a window has been closed...– mm8
Nov 20 '18 at 12:17
No,
ShowDialog
doesn't return until loginWindow
has been closed. And you can't click on a button after a window has been closed...– mm8
Nov 20 '18 at 12:17
1
1
It needs to close before the method that calls ShowDialog continues to the next line...if you don't want this you could raise an event from the login window and handle this in your app class.
– mm8
Nov 20 '18 at 12:35
It needs to close before the method that calls ShowDialog continues to the next line...if you don't want this you could raise an event from the login window and handle this in your app class.
– mm8
Nov 20 '18 at 12:35
|
show 1 more comment
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53385195%2freturning-value-from-window-to-class-wpf%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
2
i would read up on
mvvm
&binding
for wpf– JohnB
Nov 20 '18 at 2:09
Just add a public property to the LoginWindow class and set it in the Login_Click handler
– Jon
Nov 20 '18 at 2:51
you know, that it is tricky to use
Console.WriteLine(ex.Message);
method from WPF (or even WinForms) application?– vasily.sib
Nov 20 '18 at 3:14
You may want to use
ShowDialog()
instead ofShow()
. Then you can access the member variable @Jon suggest after the call.– Klaus Gütter
Nov 20 '18 at 5:13