2011-11-24 90 views
2

我有一個父框架Frame1,打開一個頁面Page1。從Page1我想單擊一個按鈕並指示Frame1打開一個新頁面Page2。這種導航方法是否可行?由於WPF子頁面獲取父框架

回答

4

由於我的框架是在主窗口中,我已經解決了使用以下方法。更標準化的方法後,我讀了幾更多的文章可能會使用MVVM方式 將在第1頁驗證碼:

Dim myWindow As Window1 = TryCast(Application.Current.MainWindow, Window1) 
    If myWindow IsNot Nothing Then 
     Dim myFrame As Frame = myWindow.Frame1 

     myFrame.Navigate(New Page2()) 
    End If 
0

有幾個方案可供選擇:

1)你可以把第1頁到幀1的參考,當你創建它,或創建後。
2)您可以使用GetWindow(this)來獲取頁面1中包含的窗口的引用。3)您可以使用事件;使Frame1聽到事件OpenPage2 4)你可以使用命令,並聽取它們,有點像事件。

其中,事件和命令方法可能是最好的。

+0

@AkseIK,纔有可能爲您創建一個示例代碼方法3)和4)?我試圖在Frame1.vb文件中創建Public Sub OpenPage2,但我無法在Page1 –

+0

上看到此功能,我不知道VB語法,所以我無法幫助您。但是,您必須在Page1中聲明事件OpenPage2,並在第1幀中偵聽該事件(Page1.OpenPage2 + = new OpenPage2Event(doOpenPage);)然後,當您在Page1中調用事件OpenPage2時,方法doOpenPage將運行。有關更多信息,請閱讀以下事件:http://msdn.microsoft.com/en-us/library/ms172877.aspx – AkselK

+0

我已經厭倦了您提出的事件方法。在Page1中創建一個新的對象類Frame1並在Frame1中調用執行Frame1.Navigate(New Page2())的公共函數。從調試開始,這行代碼被執行,但Frame1的內容不刷新,仍然顯示Page1而不是Page2。增加了NavigationService.Refresh()但仍然沒有改變.... –