Chuy nh ng trang

Một phần của tài liệu 0795Đồ Án Môn Học - Khoa Công Nghệ Thông Tin (Trang 30 - 33)

II. XÁC NH TÀI VÀ CÔNG C

2 .H đi u hành WindowsPhone 7

2.3. Chuy nh ng trang

2.3.1. Chuy n h ng trang c b n.

NavigationService là 1 l p cung c p các ph ng th c, thu c tính, s ki n đ h tr Nagivate (đi u h ng). NavigationService có th đi u h ng đ n m i đ i t ng thu c .NET Framework và c t p tin HTML. đây ta s v n d ng l p này đ chuy n trang trong Windows Phone Application. 2 ph ng th c đáng nh đây chính là Navigate và GoBack .

Ph ng th c Navigate nh n tham s là 1 URI là đ ng d n đ n đ i t ng mà mình mu n navigate đ n. Còn GoBack s giúp đi u h ng tr v đ i t ng g i Navigate tr c đó (đ i t ng ngu n).

Ví d : Khi t o m i 1 Windows Phone Application thì b n s đ c trang giao di n là MainPage.xaml và đ th c hi n thao tác chuy n trang thì b n ph i có 1 Page khác. M c đnh thì MainPage.xaml s đ c th c thi khi ch y ng d ng . Cách t o thêm Page m i: b n vào nh p ph i vào tên project c a b n trong Solution Explorer ch n Add / New Item . Trong c a s Add New Item, b n có th ch n Windows Phone Portrait Page trong template Silverlight for Windows Phone, đ t tên theo ý mu n vào click vào Add. Sau đây tôi t o 2 Page, Page có s n là MainPage.xaml và Page m i t o là Page1.xaml. T i m i Page t o 1 button.

Công vi c đ t ra là khi click vào Button c a trang này s chuy n qua trang kia. Ta làm nh sau: t o ki n Click cho 2 Button.

Button bên MainPage.xaml có s ki n click nh sau:

private void button1_Click(object sender, RoutedEventArgs e) {

NavigationService.Navigate(new Uri("/Page1.xaml",UriKind.Relative)); }

Cịn Button bên Page1.xaml thì có s ki n click:

private void button1_Click(object sender, RoutedEventArgs e) {

NavigationService.GoBack(); }

MainPage.xaml Page1.xaml

2.3.2. Chuy n trang có truy n d li u b ng Query String.

Bây gi xét đ n v n đ chuy n đ n trang khác nh ng có kèm theo d li u. Ví d khi trang MainPage.xaml , ng i dùng s nh p li u vào đ khi chuy n đ n trang Page1.xaml s d ng d li u đó s ph i cài đ t nh th nào? M t trong các cách đ truy n d li u khi chuy n trang là dùng Query String nh khi l p trình Web. Và đ i v i truy n d li u b ng QueryString, b n c n quan tâm đ n thu c tính QueryString trong l p NavigationContext. L p này có ch c n ng đ c t các tr ng thái (state) c a ho t đ ng đi u h ng. Thu c tính QueryString s tr ra b giá tr Query string mà ta có th dùng ki u d li u IDictionary đ l u tr . Và m i truy c p đ n QueryString đ l y d li u đ u ph i đ t trong ph ng th c OnNavigatedTo c a trang đ c override.

Ví d :

Có 2 Page nh m c 1. Mainpage.xaml có thêm 1 TextBox và Page1.xaml có thêm 1 TextBlock.

Bây gi yêu c u đ t ra là khi hi n MainPage lên nh p dòng text vào TextBox r i nh n vào nút chuy n trang qua bên Page1, TextBlock s hi n th dòng text lúc nãy nh p trong TextBox bên Main Page.

B t đ u, bên MainPage ta s cài đ t trong s ki n click c a Button nh sau:

private void button1_Click(object sender, RoutedEventArgs e) {

NavigationService.Navigate(new

Uri("/Page1.xaml?text="+textBox1.Text,UriKind.Relative)); }

đây d li u truy n đ c đ t tên là text. i s UriKind.Relative đ báo hi u đây là đ ng d n t ng đ i.

Gi s lúc này trong textBox1 MainPage, mình nh p vào là chu i “ABC” thì URI c a mình s nh th này:

/Page1.xaml?text=ABC

QueryString ng d ng Windows Phone c ng t ng t nh QueryString ng d ng Web. có th g i nhi u đ i s , b n ch vi c s d ng kí t &. Nhi m v ti p theo là cài đ t trang Page1.xaml. ó là mình đnh ngh a l i ph ng th c OnNavigatedTo nh sau:

protected override void

OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) {

IDictionary<string, string> para = NavigationContext.QueryString; if (para.ContainsKey("text"))

base.OnNavigatedTo(e); }

ng ng i vì ph n tên ph ng th c, đ i s dài và r c r i, vì Visual Studio có h tr cho ng i l p trình r t nhi u. V i vi c tích h p Code Snippet, b n ch c n gõ protected override , sau d u cách, môi tr ng s cho ch n công vi c và t sinh 1 s code. Gi i thích ng n g n đo n code trong thân hàm nh sau: u tiên khai báo 1 t đi n đ t tên là para đ l u b QueryString. Sau đó xét xem có t n t i khóa tên text hay khơng? (vì lúc đ u bên MainPage s d ng tên text trong QueryString). N u th a thì s truy xu t đ n n i dung có khóa là text trong t đi n para gán v cho n i dung c a textBlock1.

MainPage.xaml Page1.xaml

Hình 2.14 Chuy n trang truy n d li u s d ng QueryString.

Một phần của tài liệu 0795Đồ Án Môn Học - Khoa Công Nghệ Thông Tin (Trang 30 - 33)