我有一个WPF应用程序。
每当按下按钮时,我都会创建一个新窗口:
MyWindow myWin = new MyWindow();
myWin.Show();
然后在MyWindow的构造函数中,我将其父级设置为主应用程序,如下所示:
public MyWindow ()
{
InitializeComponent();
this.Owner = App.Current.MainWindow;
}
这使得窗口不会显示为单独的窗口并保持在我的应用程序前面。
现在我想在MyWindow关闭时从MyWindow传回一个参数。我该怎么做呢?像这样:
string myValue = myWin.Value.
这可以在WPF中完成吗?
答案 0 :(得分:2)
使用此
更改您的代码MyWindow myWin = new MyWindow();
myWin.ShowDialog();
答案 1 :(得分:2)
不需要WPF
特定的解决方案......真的,你有一个class
可以拥有原始类可以访问的public property
。
现在,如果您想要一个“花哨”的解决方案......您可以拥有TPL
解决方案(假设您使用的是.NET 4.5)。
您可以执行类似
的操作public class MyWindow
{
private TaskCompletionSource<String> _tcs = new TaskCompletionSource<String>();
public Task<String> Fetch()
{
return _tcs.Task;
}
public void handleButtonClick(object sender, EventArgs e)
{
_tcs.SetResult("some value");
}
}
...
var window = new MyWindow();
window.Show();
var value = await window.Fetch()
答案 2 :(得分:1)
这样做
public class Window1 : Window
{
...
private void btnPromptFoo_Click(object sender, RoutedEventArgs e)
{
var w = new Window2();
if (w.ShowDialog() == true)
{
string foo = w.Foo;
...
}
}
}
public class Window2 : Window
{
...
public string Foo
{
get { return txtFoo.Text; }
}
}