2009-06-08 77 views
2

我目前正在加載默認文件page.xaml,但在該頁面中,我從另一個xaml文件加載內容。隨着每個「頁面」的變化,我只是從不同的xaml文件加載內容,並且繼續。如何在Silverlight應用程序的「頁面」之間切換?

例如:this.Content = new StartPage();

但是,我遇到了一些語法問題,因爲我改變我的內容的方式,並想知道如何做到這一點的確定性答案?

例如,試圖捕捉用戶的擊鍵時,我通常會做:

this.Keydown + =新KeyEventHandler(this_KeyDown);

但事件處理程序甚至不會在我的情況下觸發。所以,我在尋找新的方法來處理我的內容切換方法,然後再次訪問按鍵問題。

+0

你可能會考慮爲Keydown問題創建一個單獨的問題 - 它似乎與導航無關。 – 2009-06-08 21:03:36

回答

0

就內容切換而言,我總是完成你在這個問題中提出的建議。通常我創建一個MainPage.xaml,它具有應用程序的框架(通常是我的Grid)。網格中的其中一個單元格被視爲應用程序的內容區域。當用戶採取我認爲是導航的操作時,我創建了一個頁面的新實例,對我來說這是一個像MyUserControl.xaml這樣的文件,然後將其添加到網格中相應的內容單元格中。 MainPage停留在應用程序的整個生命週期並輔助導航。

如果您想要更有趣的產品,並想利用基於瀏覽器的後退/前進按鈕,可以像Correl建議的那樣查看SL3導航。

0

你正在做的一件大事就是,當你通過創建框架元素並將其插入到代碼隱藏中來替換框架元素時,日誌不會自動發生。這意味着你失去了瀏覽器的後退和前進功能。當你換出頁面時,你可以手動記錄東西,但這只是一個破解,讓你的導航方式工作。

看看www.compositewpf.codeplex.com/上的Prism,特別是GUI設計的MVVM方法,它會爲您節省很多時間。並且記住,當你看MVVM時,你不需要硬核,如果你是一個單人樂隊,你總是可以剪掉許多「動態」功能。

也交換到silverlight 3並使用導航應用程序。如果你不能,看看helix 0.3,它會提供一個更加面向asp的導航方法。該鏈接提供了一個非常好的起點,它是一個三部分的文章,我建議你閱讀所有三篇文章並下載示例應用程序並理解它。

一本書可能已經寫在你的問題上了,現在已經足夠了。

相關問題