2010-08-15 52 views
2

我的WPF應用程序正在成爲一個真正的痛苦。我創建了一個窗口,並希望在點擊按鈕時載入另一個頁面。我認爲這將是直截了當的,但似乎並非如此。我設法使用this.content = new UserPage()加載其他頁面。但是,從這個UserPage,我無法回到我的主窗口。我不能使用this.content,因爲窗口不能是小孩。NavigationWindow - 它在哪裏?

因此,我四處搜索,發現我應該使用NavigationService來使事情變得更容易。我試圖使用NavigationService.GetNavigationService(this)但這不起作用,因爲它總是返回null。我想這是因爲我的主窗口來自Window而不是NavigationWindow。有沒有辦法將我的窗口轉換爲NavigationWindow而無需再次啓動項目?每當我創建一個新的文件,沒有導航窗口模板 - 只有窗口,頁面,用戶控制等...

我試着用NavigationWindow手動替換XAML,它運行良好,但NavigationService方法仍然返回null。頂部有一個酒吧,前後箭頭(都是禁用的),但我並不真的需要這個。我只想使用Navigate()方法,以便我可以在頁面之間輕鬆切換。 關於我能做什麼的想法?

感謝您的幫助,這讓我瘋狂! :)

回答

1

我試圖手動NavigationWindow更換XAML ,它運行得很好, 不過的NavigationService方法仍然 返回null

你不需要NavigationService如果窗口已經是一個NavigationWindowNavigationWindow有一個Navigate方法。

您也可以使用標準Window並在其上放置一個Frame控件。它的工作方式大致類似於NavigationWindow,只是它嵌入在窗口中

+0

感謝您的答覆。我怎樣才能在窗口中插入一個框架?我有一個網格(包含整個佈局),但是當我在窗口中放置一個框架時,它會替換網格。有沒有辦法將框架插入到現有的窗口中?再次感謝 – Skoder 2010-08-15 13:56:04

+0

把框架放在網格內 – 2010-08-15 13:58:57

+0

這很有效。我試圖把我的佈局放在框架內。相反,我只是把框架放在可視化樹的頂部,並調用它的Navigate()方法,這似乎正在工作。謝謝您的幫助。 – Skoder 2010-08-15 14:04:35

0

我已經這樣做了,但一直無法解決如何從頁面中的vb.net語句重新加載父窗口位於框架中。 我有一些代碼在我希望執行的window_loaded函數中。

+0

你在使用navigationservice.goback嗎? – Skoder 2010-08-16 12:01:16

1

Skoder,

我真的不知道你正在嘗試做的,但我會看看我可以提供幫助。首先,它聽起來像你想要一個導航窗口。如果你只在你的應用中需要一個頁面,那麼你的第一種方法將工作,但是當你談論多個頁面並且想要從一個頁面移動到另一個頁面時,你正在談論一個NavigationWindow。第二,一旦你選擇了一個導航窗口,XAML應該是直接的,只需用NavigationWindow代替Window,除非你需要意識到你不再直接控制窗口的內容。相反,內置的NavigationService將處理這個問題。哦,你不需要創建一個顯式的NavigationService,因爲這個類已經提供了一個。您只需導航:

this.Navigate(new Url("pack://aplication:,,,/MyAssembly,component/MyPage.xaml", UriKind.Absolute)); 

或者,使用可以使用XAML:

Source = "pack://aplication:,,,/MyAssembly,component/MyPage.xaml" 

在這一點上,你需要一些接口,允許用戶從一個頁面到下一個(如麪包屑控制或TreeView),但一旦他們在那裏,內置的行程控制將允許您瀏覽自動爲您保存的日記。也就是說,導航的大部分基本工作都是爲你完成的,你只需要弄清楚用戶如何導航到某些內容。

但是在這一點上,事情會變得很奇怪。我自己遇到了這個。由於無法向框架添加網格或任何其他內容明確性,因此需要更改NavigationWindow的模板以添加組成正常應用程序的額外控件。諸如菜單和工具欄之類的東西不是標準WPF NavigationWindow的一部分。原諒這種無恥的自我推銷,但我已經建立了一個產品,因爲我遇到了這些限制,市場上沒有任何東西可用。您可以在演示在一起來看看:

http://www.teraque.com/products/explorer-chrome-suite/

它被設計爲WPF NavigationControl專業版,微軟提供了免費奉送。看看演示,如果你不想購買套件,如果這是你想要申請的方向,我會很樂意放棄指針。

真誠,

唐納德·羅伊·艾雷

[email protected]