Windows Phone 7 页面的数值传递和对象传递
一、Winodws Phone 7頁(yè)面?zhèn)鬟f參數(shù)的方法:
1 .使用HyperlinkButton的NavigateUri屬性,直接將傳遞的參數(shù)添加在NavigateUri的屬性中。例如
<HyperlinkButton Content="音樂(lè)" Height="30" HorizontalAlignment="Left" Margin="68,65,0,0" Name="MusicshyperlinkButton" VerticalAlignment="Top" Width="200" NavigateUri="Musics?SongName=愛你一萬(wàn)年"/>解釋說(shuō)明:?NavigateUri="Musics?SongName=愛你一萬(wàn)年" 表示導(dǎo)航到一個(gè)別名為Musics的頁(yè)面,并將一個(gè)參數(shù)SongName傳遞給導(dǎo)航的頁(yè)面,SongName的值等于愛你一萬(wàn)年(如果要傳遞參數(shù),需要使用?符號(hào)表示后面是要傳遞的參數(shù))。
上面的是將數(shù)據(jù)傳到另一個(gè)頁(yè)面,下面是在導(dǎo)航到的頁(yè)面取得該數(shù)據(jù),取得數(shù)據(jù)的方法可以通過(guò)調(diào)用NavigationContext的QueryString屬性來(lái)獲得。具體代碼如下:
txt_SongName.Text = NavigationContext.QueryString["SongName"];上面的代碼表示獲取變量名為SongName的參數(shù)值,并賦給一個(gè)textBox。這樣便是實(shí)現(xiàn)了頁(yè)面間傳遞數(shù)據(jù),這是方式一。
?
2.使用Button控件導(dǎo)航,調(diào)用? NavigationService可以實(shí)現(xiàn)傳遞參數(shù)。例如:
NavigationService.Navigate(new Uri("Musics?SongName=愛你一萬(wàn)年&SongAuthor=劉德華", UriKind.Relative));代碼解釋:紅色部分表示兩個(gè)傳遞的兩個(gè)變量SongName,SongAuthor。并分別進(jìn)行了賦值,UriKind.Relative表示導(dǎo)航頁(yè)面的路徑是相對(duì)路徑。
傳遞參數(shù)成功之后便可以通過(guò)方法一的方式取得參數(shù)傳遞的值。(如果需要傳遞多個(gè)參數(shù)需要使用?&?將每個(gè)參數(shù)連接在一起)。
3.修改<Application.Resources>.....</Application.Resources>中的代碼實(shí)現(xiàn)別名傳遞數(shù)據(jù)。
?
<nav:UriMapper x:Key="UriMapper"> <nav:UriMapping Uri="Musics" MappedUri="/Views/MusicsPage.xaml"/> </nav:UriMapper>?
以上是不需要傳遞數(shù)據(jù)時(shí)的代碼,如果要傳遞數(shù)據(jù)可以按照以下方式修改:
<nav:UriMapper x:Key="UriMapper"> <nav:UriMapping Uri="Musics/{song}" MappedUri="/Views/MusicsPage.xaml?SongName={song}"/> </nav:UriMapper>注意Musics/{song}中的{ }內(nèi)容和SongName={song}中的{ }里面的內(nèi)容要完全相同。
上面的代碼的意思是聲明了一個(gè)名為SongName的變量,{ }的內(nèi)容可以隨意命名。
如果要傳遞多個(gè)參數(shù)可以這樣修改:
<nav:UriMapping Uri="Musics/{song}&{author}" MappedUri="/Views/MusicsPage.xaml?SongName={song}&SongAuthor={author}"/>如果參數(shù)更多,依次添加變量即可。
下面是 賦值過(guò)程。
<HyperlinkButton Content="音樂(lè)" Height="30" HorizontalAlignment="Left" Margin="68,65,0,0" Name="MusicshyperlinkButton" VerticalAlignment="Top" Width="200" NavigateUri="Musics/愛你一萬(wàn)年"/>代碼說(shuō)明:NavigateUri="Musics/歌曲",Musics/后面即使要傳遞的參數(shù)值,即相當(dāng)于:SongName=愛你一萬(wàn)年,之后便可以對(duì)其取值。取值方式和之前一樣。
二、Windows Phone 7傳遞對(duì)象的方法。
NavigationService不能傳遞對(duì)象,它只能傳遞字符串類型的數(shù)據(jù)。
所以以上傳遞數(shù)值的方法不可以用來(lái)傳遞對(duì)象。
那么實(shí)現(xiàn)的方法是什么呢?可以使用App類的靜態(tài)屬性或者使用Singleton類。
下面是使用App靜態(tài)類屬性傳遞對(duì)象的方法過(guò)程。
首先添加一個(gè)類,MusicInformation,這個(gè)類包含兩個(gè)屬性:
?
public class MusicInformation { //自動(dòng)添加get,set方法 public string SongName { get; set ; }//歌曲名 public string SongAuthor { get; set; }//歌曲作者 }?
添加完成后我們需要在App.xaml.cs中聲明這個(gè)類(MusicInformation)的變量:
public static MusicInformation musciinfor { get; set; }//定義MusicInformation類型的變量聲明之后便可以調(diào)用這個(gè)靜態(tài)屬性,并對(duì)SongName?和SongAuthor?賦值。賦值過(guò)程可以在導(dǎo)航頁(yè)面的響應(yīng)事件中完成,例如Button_Click中。
private void btn_Music_Click(object sender, RoutedEventArgs e) { App.musciinfor=new MusicInformation { SongName="愛你一萬(wàn)年.mp3", SongAuthor="劉德華" };//C#新的寫法,可以不通過(guò)構(gòu)造函數(shù),直接對(duì)變量賦值 NavigationService.Navigate(new Uri("Musics", UriKind.Relative));//導(dǎo)航到別名為Musics的頁(yè)面。 }導(dǎo)航到頁(yè)面之后可以在別名為Musics的頁(yè)面的Loaded事件中讀取傳遞的對(duì)象數(shù)據(jù)。
private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e) { if (App.musciinfor != null)//判斷傳遞的對(duì)象數(shù)據(jù)是否為空,若不為空則進(jìn)行賦值 { txt_Authory.Text = App.musciinfor.SongAuthor; txt_SongName.Text = App.musciinfor.SongName; } }這樣便實(shí)現(xiàn)了對(duì)象的數(shù)據(jù)傳遞。
?
轉(zhuǎn)載于:https://blog.51cto.com/potential/1402576
總結(jié)
以上是生活随笔為你收集整理的Windows Phone 7 页面的数值传递和对象传递的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 编解码:Base64编码在URL中的应用
- 下一篇: [转载]潜移默化学会WPF(技巧篇)--