2010-08-12 40 views
29

我有一個窗口彈出另一個窗口。我希望第二個窗口能夠在按下按鈕時將對象返回到第一個窗口。我將如何做到這一點?WPF窗口返回值

+0

是新的窗口模式的第一個窗口? – Robaticus 2010-08-12 14:00:36

+0

起初,我甚至都不知道模式窗口是什麼,但我明白了。托馬斯的代碼在下面進行了輕微的修改。 – Reflux 2010-08-12 14:51:08

回答

43

您可以在第二窗口上暴露的屬性,使得第一窗口可以找回。

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

} 
+1

這不起作用,因爲用戶與窗口交互並按下按鈕,然後我希望父窗口獲取值。 – Reflux 2010-08-12 14:39:45

+3

我明白了。問題是它應該是(w.ShowDialog()== false)。 – Reflux 2010-08-12 14:50:11

+0

@Reflux:你確定嗎?當用戶取消對話框時,ShowDialog返回false,所以你可能不想在這種情況下考慮這個值。 – 2010-08-12 14:53:42

17

如果你不希望暴露的屬性,並且你想使用一點更加明確,你可以重載ShowDialog

public DialogResult ShowDialog(out MyObject result) 
{ 
    DialogResult dr = ShowDialog(); 
    result = (dr == DialogResult.Cancel) 
     ? null 
     : MyObjectInstance; 
    return dr; 
} 
0

我知道這是一個古老的一個,但我正在尋找我正在處理的WPF應用程序的相同信息。我發現這個網站是非常有幫助:

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

這是Windows窗體寫的,但如果你忽略了約值傳遞到新窗口的一部分,它仍然工作,有一些非常好的信息。

在一個側面說明,將值傳遞給新的窗口,這是真正有用的:

WPF passing string to new window

+1

歡迎使用StackOverflow。儘管您提供的鏈接可能會有所幫助,但直接將主要內容放在您的文章上總是更好。這樣,如果鏈接被破壞並且更易於使用和更有幫助,則您的答案不會變得無關緊要。所以我建議相應地編輯你的答案。最好的祝福 – YakovL 2017-09-15 17:12:43