Подтвердить что ты не робот

Возвращаемое значение окна WPF

У меня есть окно, в котором появляется другое окно. Я хочу, чтобы второе окно могло возвращать объект в первое окно при нажатии кнопки. Как мне это сделать?

4b9b3361

Ответ 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, но если вы проигнорируете часть о передаче значений в новое окно, она по-прежнему работает и имеет некоторую действительно хорошую информацию.

На боковой ноте, чтобы передать значения в новое окно, это было действительно полезно:

WPF передаёт строку в новое окно