日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

页面导航的基础与深入

發布時間:2025/6/15 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 页面导航的基础与深入 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Windows8中是沒有對話框的概念的,不同的界面有不同的頁面,類似于網頁一樣的瀏覽模式。

通過Frame.Navigate(typeof(TestPage),obj)的方式來實現不同頁面的導航。

NavigationServer的屬性方法有:

GoBack()后退,GoForward()前進,CanGoBack()判斷是否可以后退。

頁面導航默認是不啟用緩存的,也就是后退之后的前一個頁面恢復成原始的狀態。

如果需要開啟,在構造函數中可以使用以下代碼:

[csharp] view plaincopy
  • NavigationCacheMode?=?NavigationCacheMode.Enabled;??

  • 下面新建一個項目TestNavigation來說明導航欄的使用。

    給項目添加兩個空白頁面MainPage1和MainPage2和MainPage3來進行測試:


    在App.xaml.cs將啟動頁面設置為MainPage1(找到typeof,將MainPage改成MainPage1即可)。

    在MainPage1添加一個按鈕來跳轉到Page3。

    [html] view plaincopy
  • <Grid?Background="{StaticResource?ApplicationPageBackgroundThemeBrush}">??
  • ????<Button?Content="Go?to?Page3"?HorizontalAlignment="Left"?Margin="200,100,0,0"???
  • ????????????VerticalAlignment="Top"/>??
  • ??
  • </Grid>??

  • 雙擊該按鈕,設置點擊之后的方法:

    [csharp] view plaincopy
  • private?void?Button_Click_1(object?sender,?RoutedEventArgs?e)??
  • ????????{??
  • ????????????Frame.Navigate(typeof(MainPage3));??
  • ????????}??

  • 這樣運行項目,點擊之后便會發現自動跳轉到了對應的界面。

    接下來,在MainPage3的頁面上加一個后退按鈕:

    [html] view plaincopy
  • <Button?Content="Back"?HorizontalAlignment="Left"?VerticalAlignment="Top"/>??

  • 雙擊該按鈕如下添加代碼:

    [csharp] view plaincopy
  • private?void?Button_Click_1(object?sender,?RoutedEventArgs?e)??
  • ????????{??
  • ????????????Frame.GoBack();??
  • ????????}??

  • 運行項目,則點擊該按鈕可以后退。

    如此便實現了兩個頁面的導航,而這個Frame是Page類的一個屬性。

    那么怎么給頁面傳參呢?

    其實Navigate方法還有一個重載方法:

    [csharp] view plaincopy
  • public?bool?Navigate(Type?sourcePageType);??
  • public?bool?Navigate(Type?sourcePageType,?object?parameter);??

  • 也就是說第二個參數傳什么都可以,是一個object對象。

    那么我們下面來做一個測試。

    首先是在MainPage1.xaml添加兩個按鈕,都是跳轉到MainPage3但是傳的參數不一樣:

    [html] view plaincopy
  • <Grid?Background="{StaticResource?ApplicationPageBackgroundThemeBrush}">??
  • ???????<Button?Content="Go?to?Page3-1"?HorizontalAlignment="Left"?Margin="200,100,0,0"???
  • ???????????????VerticalAlignment="Top"?Click="Button_Click_1"/>??
  • ???????<Button?Content="Go?to?Page3-2"?HorizontalAlignment="Left"?Margin="200,200,0,0"???
  • ???????????????VerticalAlignment="Top"?Click="Button_Click_2"/>??
  • ???</Grid>??

  • 頁面效果如圖:


    雙擊第一個按鈕,將其中代碼改成:

    [csharp] view plaincopy
  • private?void?Button_Click_1(object?sender,?RoutedEventArgs?e)??
  • ????????{??
  • ????????????Frame.Navigate(typeof(MainPage3),"請叫我汪海");??
  • ????????}??

  • 雙擊第二個按鈕,將其中代碼改成:

    [csharp] view plaincopy
  • private?void?Button_Click_2(object?sender,?RoutedEventArgs?e)??
  • ????????{??
  • ????????????Frame.Navigate(typeof(MainPage3),?"請還是叫我汪海");??
  • ????????}??

  • 這樣我們就給Page3傳了不同的參數。

    那么接下來我們在Page3的OnNavigatedTo接受相應的數據。

    先把返回的按鈕賦值Name="btn",然后我們把接受到的數據顯示在btn上面:

    [csharp] view plaincopy
  • protected?override?void?OnNavigatedTo(NavigationEventArgs?e)??
  • ???????{??
  • ???????????//e.Parameter代表傳來的參數??
  • ???????????btn.Content?=?e.Parameter;??
  • ???????}??

  • 此時運行項目,就可以看見跳轉后的頁面顯示傳參的內容了:



    下面來看一下如何使用導航欄的緩存功能。

    在Page1上放置兩個文本框和一個按鈕來改變第二個文本框的值:

    [html] view plaincopy
  • <TextBox?HorizontalAlignment="Center"?VerticalAlignment="Center"?Margin="-800,0,0,0"?TextWrapping="Wrap"??
  • ???????????????Text=""?/>??
  • ??
  • ??????<TextBox?x:Name="text2"?HorizontalAlignment="Center"?VerticalAlignment="Center"?Margin="-800,100,0,0"?TextWrapping="Wrap"??
  • ???????????????Text="TextBox"?/>??
  • ??????<Button?HorizontalAlignment="Center"?Content="Change!"?VerticalAlignment="Center"?Margin="-800,200,0,0"></Button>??

  • 雙擊按鈕添加方法:

    [csharp] view plaincopy
  • private?void?Button_Click_3(object?sender,?RoutedEventArgs?e)??
  • ????????{??
  • ????????????text2.Text?=?"Hello,why!";??
  • ????????}??

  • 運行項目,點擊按鈕,發現文本框的內容改成了Hello,why!但是如果跳轉到Page3再返回就會發現原本的內容又不見了。

    如果想保留里面的內容,就要啟用緩存。

    在構造方法中添加以下代碼:

    [csharp] view plaincopy
  • public?MainPage1()??
  • ????????{??
  • ????????????this.InitializeComponent();??
  • ????????????NavigationCacheMode?=?NavigationCacheMode.Enabled;??
  • ????????}??

  • 這樣就可以保留相關的信息了。

    接下來再看一看導航模式。

    OnNavigatedTo在剛進來或者從其他頁面里面返回過來的時候都可以調用。

    一共有Back,Forward,New,Refresh四種情況,一般在New的時候才重新加載數據:

    [csharp] view plaincopy
  • protected?override?void?OnNavigatedTo(NavigationEventArgs?e)??
  • ???????{??
  • ???????????if?(e.NavigationMode?==?NavigationMode.New)??
  • ???????????{??
  • ???????????????//第一次進入這個頁面,此時才加載數據。??
  • ??
  • ???????????}??
  • ???????}??


  • 還有兩個方法:

    1.OnNavigatedFrom:當頁面不再是活動頁面時調用,

    2.OnNavigatingFrom:在頁面即將不是活動頁面的。


    總結

    以上是生活随笔為你收集整理的页面导航的基础与深入的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。