У меня есть окно, в котором появляется другое окно. Я хочу, чтобы второе окно могло возвращать объект в первое окно при нажатии кнопки. Как мне это сделать?
Возвращаемое значение окна WPF
Ответ 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; }
}
}
Ответ 2
Если вы не хотите раскрывать свойство и хотите сделать использование более явным, вы можете перегрузить ShowDialog
:
public DialogResult ShowDialog(out MyObject result)
{
DialogResult dr = ShowDialog();
result = (dr == DialogResult.Cancel)
? null
: MyObjectInstance;
return dr;
}
Ответ 3
Я знаю, что это старый, но я искал ту же информацию для приложения WPF, над которым я работаю. Я нашел этот сайт очень полезным:
http://www.dreamincode.net/forums/topic/206458-the-right-way-to-get-values-from-form1-to-form2/
Это написано для Windows Forms, но если вы проигнорируете часть о передаче значений в новое окно, она по-прежнему работает и имеет некоторую действительно хорошую информацию.
На боковой ноте, чтобы передать значения в новое окно, это было действительно полезно: