在silverlight中有時需要進入不同的xaml頁面,但是一般情況下是不能實作“前進”和“後退”的,在這裡我們可以使用frame+page控件制作導航功能實作上一頁和下一頁的跳轉功能。
在本文中我們制作一個執行個體如下:添加一個frame控件,然後點選“加載uc”和“加載pageshow”按鈕加載uc.xaml和pageshow.xaml頁面。在加載後我們可以通過滑鼠右鍵菜單中的“上一頁”和“下一頁”按鈕進入上下頁,可以通路到曆史頁面。在uc頁面中有一個按鈕,點選該按鈕“測試按鈕”即可進入pagedemo.xaml并且跟入參數,在該頁面接收參數顯示出來。
首先我們在mainpage.xaml頁面中添加一個frame控件(注意引入system.windows.controls.navigation.dll),并且設定urimapping映射位址,其xaml位址如下:
然後再mainpage.xaml.cs頁面中判斷frame的cangoforward和cangoback屬性來決定是否可以上一頁或者下一頁跳轉。
在uc.xaml.cs中是一個按鈕,該按鈕可以通過navigationservice.navigate(new uri("/pagedemo?pid=3&sid=15320", urikind.relative));跳轉到pagedemo.xaml頁面,并且跟入pid和sid參數:
在pagedemo.xaml.cs代碼中是通過navigationcontext類顯示uc.xaml頁面傳遞過來的pid和sid值:
下面我們來看看本demo的執行個體效果如下,注意url欄#/uc即跳轉到uc.xaml頁面,按“上一頁”和“下一頁”即可進入曆史頁面:

在按上面的“測試按鈕”時可以進入以下界面,并且傳入參數pid和sid。
在按上圖的“加載pageshow”按鈕時即可進入以下界面: