windowsphone開發(fā)頁面跳轉(zhuǎn)數(shù)據(jù)保存_第1頁
windowsphone開發(fā)頁面跳轉(zhuǎn)數(shù)據(jù)保存_第2頁
windowsphone開發(fā)頁面跳轉(zhuǎn)數(shù)據(jù)保存_第3頁
windowsphone開發(fā)頁面跳轉(zhuǎn)數(shù)據(jù)保存_第4頁
windowsphone開發(fā)頁面跳轉(zhuǎn)數(shù)據(jù)保存_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、按照一般做法,剛學(xué)會如何導(dǎo)航,還是不夠的,因為要知道,手機里面的每個頁 面,就如同Web頁面一樣,是無狀態(tài)的。啥是無狀態(tài)?如果我們玩過 Web開發(fā)就明白了,當(dāng)你在當(dāng)前頁面輸入一些內(nèi)容,然后退回到前一頁面,再前進到該頁面,就會發(fā)現(xiàn),之前輸入的內(nèi)容可能會沒了。再比如吧,你在頁面A中進行了數(shù)據(jù)綁定,點擊按鈕后進行查詢并把查詢結(jié)果顯示在表格中,然后你點擊一個超鏈接,跳到D頁面,然后你再從D頁面退回A頁面,你會發(fā)現(xiàn),剛才查詢的結(jié)果就不會顯示了。這就是無狀態(tài),也就是說,在你導(dǎo)航離開當(dāng)前頁面后,當(dāng)前頁面不會保留任何操 作相關(guān)的數(shù)據(jù)。在手機應(yīng)用程序中同樣如此,所以,在導(dǎo)航離開當(dāng)前頁面時保存狀態(tài)信息, 而在 用

2、戶再次回到該頁面時,恢復(fù)狀態(tài)信息。具體做法是重寫兩個方法:1、OnNavigatedFrom,當(dāng)導(dǎo)航離開當(dāng)前頁面后調(diào)用,在這個方法中,要把狀態(tài)相關(guān)的數(shù)據(jù)保存;2、OnNavigatedTo ,當(dāng)用戶再次導(dǎo)航回該頁面時,該方法被調(diào)用,這時候取 出狀態(tài)信息并恢復(fù)。要讀寫狀態(tài)信息,用到頁面實例的 State屬性,它是一個字典,也就是鍵-值對Key - Value。F面我們來演示一下如何保存和恢復(fù)狀態(tài)信息。新建一個WP項目,隨便布局一下主頁面,反正做成類似撰寫郵件的頁面就行 了,然后放一個按鈕,點擊按鈕后打開電話撥號程序開始打電話。源碼打印?.2.p rivatevoid button

3、1_Click( object sender, RoutedEventArgs e)3.P honeCallTask cc =new P honeCallTask();4.cc.Dis pl ayName =5.cc.P honeNumber ="1342580073"6.cc.Show();7.接著重寫上面說的兩個方法,分別保存和讀取狀態(tài)。對于State屬性,不必用Add,直接用鍵和值設(shè)置就行了,比較我要保存姓名信息,就這樣寫:this.State"Name"=" 小紅"如果字典集合中沒有Name的鍵,會自動創(chuàng)建,如果有,就改寫其值

4、。對,你肯定想到了,和A中我們使用Session差不多。源碼打印?1.protectedoverride void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)2.3.this .State "content" = ContentTextBox.Text;4.this .State "title" = TitleTextBox.Text;5.base .OnNavigatedFrom(e);6.8.protectedoverride void OnNavigatedTo(

5、System.Windows.Navigation.NavigationEventArgs e)10.if ( this .State.ContainsKey( "title")12.this .TitleTextBox.Text = State"title" as string ;9.20.if ( this .State.ContainsKey( "content")this .ContentTextBox.Text = Statebase .OnNavigatedTo(e);"co

6、ntent" as string ;要注意的是,如果是讀取狀態(tài)信息時,記得先判斷要獲取數(shù)據(jù)的鍵是否存在, 如 果存在再取值,為什么?別忘了,當(dāng)應(yīng)用程序第一次啟動時,也會調(diào)用On NavigatedTo 方法,這時候,內(nèi)存中不可能保存任何狀態(tài)的,所以,在取狀 態(tài)信息時候要記得這點。然而,我經(jīng)過實驗發(fā)現(xiàn),在 WP 7.1的模擬器中,不需要保存狀態(tài),什么代碼都不寫,系統(tǒng)會自動保存狀態(tài),然后導(dǎo)航回去后,狀態(tài)信息依然存在。就是不知道真實手機上是不是這樣,如果是,那 WP也真是強大!fMNhalA A*頁面名稱Jtff 仝<rSSAHaJIIVQ4.xmlns:x ="htt p

7、: /頁面名稱F面是完整示例代碼。XAML源碼打印?1.vp hone:P honeA pp licatio nP age2.x:Class ="SaveStates.Main Page"3.xmlns ="htt p: /"VerticalAlignment="Top" FontSize ="StaticResource textSize"/>5.xmlns:p hone ="clr-names pace:Microsoft .P hone.Controls;assembly=Microsoft.

8、Phone"6.xmlns:shell="clr-names pace:Microsoft .P hone.Shell;assembly=Microsoft .P hon8.e"xmlns:d ="htt p:/ pression/blend/2008"xmlns:mc ="htt p:/schemas.o /mark up-co mp atibility/2006"mc

9、:Ignorable ="d" d:DesignWidth ="480" d:DesignHeight ="768"FontFamily ="StaticResource P honeFontFamilyNormal"FontSize ="StaticResource P honeFontSizeNormal"Foreground ="StaticResource PhoneForegroundBrush"Suppo rtedOrientations='Po rtra

10、itOrLandsca pe"Orientation="P ortrait"shell:SystemTray.lsVisible="True" xmlns:my ="clr-names pace:System;assembly=mscorlib" >vp hone:P honeA pp licatio nP age.Resources><my:Double x:Key ="textSize" >35</my:Double>v/p hone: PhoneA pp lica

11、tio nP age.Resources><!-LayoutRoot是包含所有頁面內(nèi)容的根網(wǎng)格->vGrid x:Name="LayoutRoot" Background ="Trans parent" >vGrid.RowDefinitions<RowDefinition Height ="Auto" /><RowDefinition Height ="*" /></Grid.RowDefinitions><!-Title Panel包含應(yīng)用程序的

12、名稱和頁標(biāo)題<Stack Panelx:Name="Title Panel"<TextBlockx:Name ="A pp licationTitle"Grid.Row ="0" Margin ="12,17,0,28">Text ="我的應(yīng)用程序Style="StaticResource P honeTextNormalStyle"/><TextBlock x:Name ="PageTitle" Text ="頁面名稱Mar

13、gin ="9,-7,0,0" Style ='StaticResource P honeTextTitle1Style"/>29.v/Stack Panel30.31.v!-Content Panel -在此處放置其他內(nèi)容->32.vGrid x:Name ="Content Panel"Grid.Row="133.vGrid.RowDefinitions>34.vRowDefinitionHeight="Auto"/>35.vRowDefinitionHeight="A

14、uto"/>36.vRowDefinitionHeight="Auto"/>37.vRowDefinitionHeight="*" />38.vRowDefinitionHeight="Auto"/>39.v/Grid.RowDefinitions>40.vTextBlock Grid.Row="0"Horizontal/AlignH,0,10"Name= "textblockTitle"Text ="標(biāo)題:"Margin =

15、"12,0,12,0">="Left" Margin ="13,1541.vTextBox Grid.Row ="1" HorizontalAlignment ="Stretch" Margin ="2" Name="TitleTextBox"VerticalAlignment="T op" />42.vTextBlock FontSize ="StaticResource textSize"HorizontalA

16、lignment ="Left" Margin ="13,10,0,5"Name="textBlock1"Text ="正文:"VerticalAlignment="Top" Grid.Row ="2" />43.<TextBoxGrid.Row ="3" HorizontalAlignment ="Stretch" Margin ="2" Name="ContentTextBox"V

17、erticalAlignment ="Stretch"TextWra pp ing ="Wra p" Vertica44.lScrollBarVisibilityvButton="Auto" />Content ="提/>"Grid.Row ="4" Height ="72" HorizontalAlignment ="Stretch" Margin ="2" Name="bu tton1" Vertic

18、alAlignment ="To p" Click ="button1_Click"45.v/Grid>46.v/Grid>47.48.<!-演示 App licationBar用法的示例代碼49.<!-vp hone:P honeA pp licatio nP age.A pp licationBar50.vshell:A pp licationBarIsVisible= "True" lsMenuEnabled ="True" >51.png"vshell:A pp li

19、cationBarlconButtonText ="按鈕 1" />IconUri="/lmages/a pp bar_button1.52.png"vshell:A pp licationBarlconButtonText ="按鈕 2" />IconUri="/Images/a pp bar_button2.53.vshell:A pp licationBar.Menultems54.vshell:A pp licationBarMenultemText="菜單項1" />55.vs

20、hell:A pp licationBarMenultemText="菜單項2" />56.v/shell:A pp licationBar.Menultems57.v/shell:A pp licationBar58.v/p hone:P honeA pp licatio nP age.A pp licationBar59.60.v/phone: PhoneA pp licatio nP age>C#源碼打印?1.usingSystem;2.usingSystem.Collections.Generic;3.usingSystem.Linq;4.usingSy

21、stem.Net;5.6.usingusingSystem.Windows;System.Windows.Controls;7.usingSystem.Windows.Documents;8.9.usingusingSystem.Windows.I nput;System.Windows.Media;10.usingSystem.Windows.Media.Animation;11.usingSystem.Windows.Sha pes;12.13.usingusingMicrosoft .P hone.Controls;Microsoft. Phone.Tasks;14.15.names pace SaveStates16.17.p ublicp artial class MainP age : P honeA pp licatio nP age18.19./構(gòu)造函數(shù)20.public Main Page()21.22.InitializeCo mpo nent();23.24.25.p rivatevoid button1_Click( object sender, RoutedEventArgs e)26.27.P honeCal

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論