windows phone 頁面導航(6)

來源:互聯網
上載者:User

頁面導航的例子我們使用的是兩個頁面,從第一個頁面(MainPage)導航到第二個頁面(SecondPage),然後可以從第二個頁面導航到第一個頁面 ,使用的os 7.1;

頁面導航沒有引入新的命名空間使用的到屬性是派生於PhoneApplicationPage類;

  MainPage.xaml 檔案中用到的代碼為: 

 <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"></Grid>
        <TextBlock x:Name="Navigation" Text="導航到第二個頁面" Grid.Row="1" VerticalAlignment="Center" HorizontalAlignment="Center" ManipulationStarted="Navigation_ManipulationStarted"></TextBlock>
    </Grid>

   隱藏檔案代碼為:

//textblock的導航時間        private void Navigation_ManipulationStarted(object sender, ManipulationStartedEventArgs e)        {            //為什麼一定是相對的--知識點①            this.NavigationService.Navigate(new Uri("/SecondPage.xaml", UriKind.Relative));            e.Complete();            e.Handled = true;        }        protected override void OnManipulationStarted(ManipulationStartedEventArgs e)        {            //知識點②            SolidColorBrush scb=new SolidColorBrush ();            //知識點③            Color color = new Color();            color.A = (byte)245;            color.R = (byte)135;            color.G = (byte)25;            color.B = (byte)15;            scb.Color = color;            ContentPanel.Background = scb;            base.OnManipulationStarted(e);        }

 隱藏檔案的代碼是在預設代碼的基礎上加上以上兩個方法,實現的效果是當點擊(觸摸)非名為Navigation的TextBlock元素時,ContenPanel就會改變為設定好的固定顏色,MainPage:

 

  知識點①:this.NavigationService.Navigate() 是頁面導航的核心方法參數是URI類型的對象,所以要New該類,並且執行個體化URI的時候SecondPage.xaml前有斜線,第二個參數表明    此URI是相對於SecondPage.xaml,絕對的URI是指完整引用某個資源如: http://www.sensengo.com/Index.html  相對URI取決於前面定義的基
URI(例如:/Index.html)

 

         URI的建構函式有一個包含了基URI和相對URI字串:

Uri(Uri, String)

根據指定的基 URI 和相對 URI
字串,初始化 Uri
類的新執行個體

         執行個體:

Uri baseUri = new Uri("http://www.contoso.com");
      Uri myUri = new Uri(baseUri, "catalog/shownew.htm");

 

         所以URI執行個體構成了絕對URI,myUri.ToString()字串是為:http://www.contoso.com/catalog/shownew.htm

          

  知識點②:SolidColorBrush類是繪製純色地區,SolidColorBrush的另一種構造方法為:SolidColorBrush(Color),所以以上代碼也可以這樣實現:   ContenPane.Backgroud= new solidColorBrush(

    Color.FromArgb(245,(byte)135,(byte)25,(byte)15));

               知識點③:Color這裡就是SolidColorBrush的屬性color設定顏色,color類描繪的就是一個ARGB顏色,在形成映像中的每個像素的顏色表示為一個 32 位元:分別用 8 位表示 Alpha、紅色、綠色和藍色 (ARGB)。
這四個分量的值都是 0 到 255,其中 0 表示沒有亮度,255 表示最大亮度。
alpha 分量指定顏色的透明度:0 表示完全透明,255 表示完全不透明。 要確定顏色的 alpha、紅色、綠色或藍色成分

 

   SecondPage.xaml 檔案主要代碼:

 <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"></Grid>
        <TextBlock x:Name="Navigation" Text="導航到第-個頁面" Grid.Row="1" VerticalAlignment="Center" HorizontalAlignment="Center" ManipulationStarted="Navigation_ManipulationStarted"></TextBlock>
    </Grid>

  

   隱藏檔案添加的兩個方法代碼:

//textblock的導航時間        private void Navigation_ManipulationStarted(object sender, ManipulationStartedEventArgs e)        {            //兩個方式實現的效果一樣,但是原理不同--知識點④            this.NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));            //this.NavigationService.GoBack();            e.Complete();            e.Handled = true;        }        protected override void OnManipulationStarted(ManipulationStartedEventArgs e)        {            //純色            SolidColorBrush scb = new SolidColorBrush();            //alpha            Color color = new Color();            color.A = (byte)255;            color.R = (byte)145;            color.G = (byte)35;            color.B = (byte)15;            scb.Color = color;            ContentPanel.Background = scb;            base.OnManipulationStarted(e);        }

知識點④:在這裡因為只有兩個頁面,返回到上一個頁面的效果一樣,但是原理不同,this.NavigationService.Navigate是實現一個新的URI執行個體,this.NavigationService.GoBack()則是後退到記錄中的最新頁面,如果沒有記錄頁面則退出程式;

 

 知識點⑤ :墓碑化:因為windows phone手機不支援第三方程式後台,所以提供了另一種方法Tomstone,簡單的講就是在程式A還在啟動並執行情況下,突然其他程式B,此時系統會暫時關閉程式A的線程,並暫存其狀態;當程式B使用完畢,程式A線程會重新啟動,恢複程式A之前的狀態;本節的頁面導航就是墓碑化的例子

    小結:導航的核心一句話就是:this.NavigationService.Navigate()和返回上一個頁面this.NavigationService.GoBack(),簡單瞭解墓碑化;發現一個方  法也可以導航到其他頁面如下:

  Uri uri = new Uri("/SecondPage.xaml", UriKind.Relative);
            this.NavigationService.Source = uri;

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.