设为首页 收藏本站
查看: 932|回复: 0

Windows Phone 7 页面的数值传递和对象传递

[复制链接]

尚未签到

发表于 2015-5-10 13:12:55 | 显示全部楼层 |阅读模式
一、Winodws Phone 7页面传递参数的方法:

1 .使用HyperlinkButton的NavigateUri属性,直接将传递的参数添加在NavigateUri的属性中。例如




解释说明: NavigateUri="Musics?SongName=爱你一万年" 表示导航到一个别名为Musics的页面,并将一个参数SongName传递给导航的页面,SongName的值等于爱你一万年(如果要传递参数,需要使用?符号表示后面是要传递的参数)。

上面的是将数据传到另一个页面,下面是在导航到的页面取得该数据,取得数据的方法可以通过调用NavigationContext的QueryString属性来获得。具体代码如下:




txt_SongName.Text = NavigationContext.QueryString["SongName"];
上面的代码表示获取变量名为SongName的参数值,并赋给一个textBox。这样便是实现了页面间传递数据,这是方式一。



2.使用Button控件导航,调用  NavigationService可以实现传递参数。例如:



NavigationService.Navigate(new Uri("Musics?SongName=爱你一万年&SongAuthor=刘德华", UriKind.Relative));
代码解释:红色部分表示两个传递的两个变量SongName,SongAuthor。并分别进行了赋值,UriKind.Relative表示导航页面的路径是相对路径。

传递参数成功之后便可以通过方法一的方式取得参数传递的值。(如果需要传递多个参数需要使用 & 将每个参数连接在一起)。


3.修改.....中的代码实现别名传递数据。
  






  
  以上是不需要传递数据时的代码,如果要传递数据可以按照以下方式修改:






注意Musics/{song}中的{ }内容和SongName={song}中的{ }里面的内容要完全相同。

上面的代码的意思是声明了一个名为SongName的变量,{ }的内容可以随意命名。

如果要传递多个参数可以这样修改:





如果参数更多,依次添加变量即可。

下面是 赋值过程。





  代码说明:NavigateUri="Musics/歌曲",Musics/后面即使要传递的参数值,即相当于:SongName=爱你一万年,之后便可以对其取值。取值方式和之前一样。

二、Windows Phone 7传递对象的方法。

NavigationService不能传递对象,它只能传递字符串类型的数据。

所以以上传递数值的方法不可以用来传递对象。

那么实现的方法是什么呢?可以使用App类的静态属性或者使用Singleton类。

下面是使用App静态类属性传递对象的方法过程。

首先添加一个类,MusicInformation,这个类包含两个属性:

  



public class MusicInformation
{
//自动添加get,set方法
public string SongName { get; set ; }//歌曲名
public string SongAuthor { get; set; }//歌曲作者

}
  
添加完成后我们需要在App.xaml.cs中声明这个类(MusicInformation)的变量:




public static MusicInformation musciinfor { get; set; }//定义MusicInformation类型的变量
  声明之后便可以调用这个静态属性,并对SongName 和SongAuthor 赋值。赋值过程可以在导航页面的响应事件中完成,例如Button_Click中。



private void btn_Music_Click(object sender, RoutedEventArgs e)
{
App.musciinfor=new MusicInformation
{
SongName="爱你一万年.mp3",
SongAuthor="刘德华"
};//C#新的写法,可以不通过构造函数,直接对变量赋值
NavigationService.Navigate(new Uri("Musics", UriKind.Relative));//导航到别名为Musics的页面。
}
导航到页面之后可以在别名为Musics的页面的Loaded事件中读取传递的对象数据。




private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
{
if (App.musciinfor != null)//判断传递的对象数据是否为空,若不为空则进行赋值
            {
txt_Authory.Text = App.musciinfor.SongAuthor;
txt_SongName.Text = App.musciinfor.SongName;
}
}
  这样便实现了对象的数据传递。
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-65470-1-1.html 上篇帖子: 模仿Windows Phone 7等待状态 下篇帖子: Compiling WinPcap for Windows 7 x64
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表