2011-12-27 64 views

回答

1

在關閉之前在窗口中設置窗口的DialogResult
您設置的值將ShowDialog()

如果你想比bool?返回更多,創建調用任何你想要的ShowDialog(),並返回一個包裝方法返回。

1

@SLaks說,使用DialogReslult ...如果這還不夠,並且您使用的是MVVM模型,那麼您可以使用您的數據模型:將子窗口的DataContext設置爲您的數據模型實例,然後您可以在子窗口中contorls綁定到你的模型中的任何數據成員 - 通常你會設置DataContext父窗口的DataContext ...

protected popMyWindow() 
{ 
    MyChildWindow cw = new MyChildWindow(); 
    cw.DataContext = this.DataContext(); 
    // show the window... 
} 
1

造成這些問題的解決WPF是「頁面功能'。

PageFunction是WPF中定義的一個新術語。它使用戶能夠導航到特定頁面並執行任務,然後返回到調用者頁面並顯示結果。它的行爲就像Modal Dialogbox一樣,不同之處在於PageFunction不會顯示爲彈出窗口,而是與調用者顯示在同一頁面中。

來源:http://blogs.msdn.com/b/marthami/archive/2007/10/02/how-to-use-pagefunction-to-create-dialog-behavior-in-wpf.aspx

它不同於在該頁面導航到,更重要的是,它已經強烈WPF管道內輸入,並且不需要你開發一個包裹ShowDialog的格局新班級做同樣的事情。

這裏有一個解釋StackOverflow的線程...

WPF - PageFunctions. Why are they needed?

+1

這是件好事,唯一需要注意的是,應用程序必須是一個「導航應用」 AFIKT – 2011-12-27 17:27:09

+0

是的,大概是WPF的祖先有它請記住,如果您需要從對話中獲取某些內容,則無論如何您都隱式地位於導航上下文中。這裏有一個想法:期望在502認證考試的不同環境中看到PageFunction出現*幾次*。這就是爲什麼我使用了「WPF解決方案」這個詞彙:) – 2011-12-27 19:31:06