Вернуть объект из всплывающего окна - PullRequest
39 голосов
/ 12 августа 2010

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

Ответы [ 4 ]

51 голосов
/ 12 августа 2010

Вы можете выставить свойство во втором окне, чтобы первое окно могло получить его.

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; }
    }

}
20 голосов
/ 12 августа 2010

Если вы не хотите выставлять свойство и хотите сделать использование более явным, вы можете перегрузить ShowDialog:

public DialogResult ShowDialog(out MyObject result)
{
   DialogResult dr = ShowDialog();
   result = (dr == DialogResult.Cancel) 
      ? null 
      : MyObjectInstance;
   return dr;
}
1 голос
/ 19 апреля 2018

Святая мать Марса, мне потребовалось вечно, чтобы понять:

ОКНО 1:

if ((bool)window.ShowDialog() == true)
{
   Window2 content = window.Content as Window2;
   string result = content.result;
   int i = 0;
}

ОКНО 2:

public partial class Window2 : UserControl
{
    public string result
    {
        get { return resultTextBox.Text; }
    }

    public Window2()
    {
        InitializeComponent();
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        Window.GetWindow(this).DialogResult = true;
        Window.GetWindow(this).Close();
    }
}

XAML:

<Button IsDefault="True" ... />
0 голосов
/ 15 сентября 2017

Я знаю, что это старый, но я искал ту же информацию для приложения WPF, над которым я работаю.Я нашел этот сайт действительно полезным:

http://www.dreamincode.net/forums/topic/206458-the-right-way-to-get-values-from-form1-to-form2/

Это написано для Windows Forms, но если вы игнорируете часть о передаче значений в новое окно, он все еще работал и имелдействительно хорошая информация.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...