Windows Phone7頁面導航

來源:互聯網
上載者:User

原文地址:http://www.cnblogs.com/xieLongBao/archive/2012/02/26/2368377.html

 

跟林永堅老師學WP7開發

  • 內容概覽
  • 使用xaml進行導航
  • 使用C#代碼進行導航
  • 地址別名
  • 頁面之間的資料傳遞
  • 回退按鈕

為了更好的控制導航,我們需要Crowdsourced Security Testing道頁面的架構與架構:

  • Frame 
    • 只有一個單獨的PhoneApplicationFrame
    • 包含一個或多個PhoneApplicationPage
    • 也包含系統托盤和應用程式欄
  • Page
    • 包含標題,可以有獨立的應用程式欄
    • Page之間可以相互導航
  • SIlverlight for window phone 使用以頁面為基礎的頁面導航
    • 與web的頁面導航類似
    • 每個獨立的都有唯一的URI
    • 每個獨立的頁面都是沒有狀態的

概念介紹完了,下面就是例子了:

  • XAML中使用導航

在導航裡的一個很重要的控制項:hyplinkbutton,所以我先拖四個hyplinkbutton到介面中來,

這樣就是首頁面了,接下來再建立一個新的導航到的頁面Music.xaml到views目錄下,然後添加contant為音樂的hyperlinkbutton的NavigateUri

這樣啟動程式就可以正常的導航了,下面的三個按照同樣的操作就可以了,

    • 用C#代碼進行導航(使用到一個很重要的類)

    • 使用別名進行導航需要3步:第一步需要在App.xaml檔案裡定義映射規則,第二部在App.xaml.cs裡初始化這個定義的Resource

      第二部在App.xaml.cs裡初始化這個定義的Resource

第三步:在頁面裡使用,把HyperLinkButton的NavigationURi屬性修改成如下,到此別名導航就完成了。

?
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">        <HyperlinkButton Content="音樂" Height="30" HorizontalAlignment="Left" NavigateUri="Music" Margin="29,131,0,0" Name="hyperlinkButton1" VerticalAlignment="Top" Width="115" />        <HyperlinkButton Content="視頻" Height="30" HorizontalAlignment="Left" NavigateUri="Vedio" Margin="29,60,0,0" Name="Vedio" VerticalAlignment="Top" Width="115" />        <HyperlinkButton Content="瀏覽器" Height="30" HorizontalAlignment="Left" NavigateUri="WebBrowser" Margin="29,283,0,0" Name="WebBrowser" VerticalAlignment="Top" Width="115" />        <HyperlinkButton Content="圖片" Height="30" HorizontalAlignment="Left" NavigateUri="Picture" Margin="29,207,0,0" Name="hyperlinkButton4" VerticalAlignment="Top" Width="115" />                <Button Content="音樂" Height="72" HorizontalAlignment="Left" Margin="241,131,0,0" Name="musicbutton1" VerticalAlignment="Top" Width="160" Click="musicbutton1_Click" />        <Button Content="視頻" Height="72" HorizontalAlignment="Left" Margin="241,39,0,0" Name="videobutton2" VerticalAlignment="Top" Width="160" Click="videobutton2_Click" />        <Button Content="瀏覽器" Height="72" HorizontalAlignment="Left" Margin="241,323,0,0" Name="webbroserbutton3" VerticalAlignment="Top" Width="160" Click="webbroserbutton3_Click" />        <Button Content="圖片" Height="72" HorizontalAlignment="Left" Margin="241,225,0,0" Name="picturebutton4" VerticalAlignment="Top" Width="160" Click="picturebutton4_Click" />    </Grid>
  •   頁面間傳遞資料,最常用的是通過QueryString來傳遞資料,?
    <HyperlinkButton Content="歌曲1" NavigateUri="/views/Music.xaml?song=歌曲1" Height="30" HorizontalAlignment="Left" Margin="175,230,0,0" Name="hyperlinkButton2" VerticalAlignment="Top" Width="200" /> 

      在Music.xaml頁面被載入的時候我們就顯示傳遞過來的參數,

    ?
    using System;using System.Collections.Generic;using System.Linq;using System.Net;using System.Windows;using System.Windows.Controls;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Animation;using System.Windows.Shapes;using Microsoft.Phone.Controls; namespace PageNavigation.views{    public partial class Music : PhoneApplicationPage    {        public Music()        {            InitializeComponent();        }         private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)        {            if (NavigationContext.QueryString.Count > 0)            {                textBlock1.Text = NavigationContext.QueryString["song"];            }        }     }}

      

  • 使用別名來傳遞參數,首先需要修改App.xaml裡的映射規則

頁面修改為

?
<HyperlinkButton Content="歌曲1" NavigateUri="Music/歌曲1" Height="30" HorizontalAlignment="Left" Margin="175,230,0,0" Name="hyperlinkButton2" VerticalAlignment="Top" Width="200" />

  注意:NavigationService預設不能傳遞對象(可以通過使用App類的靜態屬性、SIngleton類、把對象分解為QueryString來傳遞......)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.