拼吾爱程序人生.Net编程Silverlight Silverlight 2 (beta1)数据操作(7)

1  /  1  页   1 跳转 查看:777

Silverlight 2 (beta1)数据操作(7)

Silverlight 2 (beta1)数据操作(7)

文/lyj  出处/博客园

调用FlickR REST APIs来查询图片

原文:Silverlight FlickR Example (Brad Abrams)
地址:http://blogs.msdn.com/brada/arch ... flickr-example.aspx

在这个例子中我将展示从Silverlight客户端调用FlickR REST APIs。最后实现如下图所示:

 附件: 您所在的用户组无法下载或查看附件


目录

  • 确定Silverlight用户界面
  • 本地打开文件对话框
  • 调用FlickR服务来查找图片
  • 使用IsolatedStorag来维持跳转设置
  • 定义皮肤
  • 下载 完整例子和 demo文件


第一部分:确定Silverlight用户界面

你可以回顾我的End to End Silverlight Application 这篇帖子了解如何开始。首先在Blend中添加一个TextBox和Button控件,如下图所示:

 附件: 您所在的用户组无法下载或查看附件


务必在属性窗口为这些控件设置有意义的名称以便以后可以方便使用,我把这两个控件分别命名为searchTermTextBox和button。

拖一个示例图片到窗口中,接下来我们需要用到这个图片(你可以在SilverlightFlickRDemoFiles zip中使用cow.jpg这个图片)

 附件: 您所在的用户组无法下载或查看附件


还有一点务必设置它的名称,我命名为searchResultsImage

第二部分:本地打开文件对话框

为了测试布局,我们添加一个打开文件对话框来处理客户端的图片。

在page.xaml中为Button按钮添加一个单击事件

Code


在page.xaml.cs中编写按钮事件来调用打开文件对话框。

Code


这段代码作用是打开系统本地文件对话框允许用者在本地磁盘选择文件。然后开发者只保存文件路径。注意我们怎样在客户端处理图片呢?

 附件: 您所在的用户组无法下载或查看附件



 附件: 您所在的用户组无法下载或查看附件


使用打开文件对话框,你可以上传文件到服务器或者存储文件到本地。但是这里我们是从flickr上查询图片。

 感谢原创者的辛勤劳动,希望对您有所帮助,转载请注明原出处。
 您可能对 [Silverlight] 的这些文章也感兴趣:

Silverlight 2中的视觉状态管理 Part1
在Silverlight中使用定时器(Timer)
非常精彩的Silverlight 2控件样式
Silverlight的中文显示问题
在silverlight中开发User Control(用户控件)
使用SilverLight构建插件式应用程序(八) —聊天插件Duplex WCF的实现
Silverlight专题(11) - Silverlight的单元测试
Silverlight 2 beta 2实现苹果(Mac OS)风格的按钮
SilverLight for SharePoint
Silverlight 2应用Web Service两例
 

回复:Silverlight 2 (beta1)数据操作(7)

第三部分:调用FlickR服务来查找图片

现在我们进入程序的主要部分了,我们根据查询条件通过调用FlickRs REST API来获取图片结果集。并且当用户在图片上单击,可以自动跳至下一张图片。

首先,调用FlickRs REST API,你需要申请一个Key,从FlickRs REST API可以获取。

接下来,定义一个LoadPhotos()方法在Silverlight客户端调用REST API。

Code


调用REST API完成之后,我们需要分析XML格式,你可以参考 http://flickr.com/services/api/explore/这个页面,其格式基本上像下面样子:

Code


所以,我们需要用到XML,Silverlight 2对LinqToXml很好的支持,我们很容易利用LinqToXml来获取节点,使用LinqToXml之前,你需要在Silverlight工程中添加System.Xml.linq.dll程序集。

 附件: 您所在的用户组无法下载或查看附件


现在,让我们实现flickRService_DownloadStringCompleted方法。首先判断是否在调用过程中发生了错误,确定一下是否正确的调用了FlickR服务。

Code


现在在单击事件中使用LoadPhotos方法。

Code


运行程序,如果你看到如下图所示的话,key验证失败,请检验你的API key

 附件: 您所在的用户组无法下载或查看附件


当你看到的是这样,你上面做的全部都正确了,可以接着往下做!

 附件: 您所在的用户组无法下载或查看附件


我们分析一下XML结果集,需要截取图片的URL地址,我们使用LINQ,首先呢,定义一个FlickRPhoto类来封装一下XML节点的映射。

Code


还要添加一个属性值在遵循FlickR URL协议下格式化输出图片URL。

Code


现在,我们需要使用LINQ编码实现类成员与XML节点的映射。

Code


接下来显示图片,获取返回的结果集第一个记录并且显示。

Code


现在非常酷了,但是我想要显示别的图片,当单击图片的时候显示另一张图片。这样做的话先定义一个事件驱动。

Code


接下来实现这个事件,先预先检验图片是否为空,在使用当前ImageNumber字段数值获取下一张图片。

Code


现在你在图片上点击,它循环的显示图片了。

 附件: 您所在的用户组无法下载或查看附件
 

回复:Silverlight 2 (beta1)数据操作(7)

第四部分:使用IsolatedStorag来维持跳转设置

现在,我们考虑一下跳转时候的一些状态。

首先,当“Go”按钮按下的时候,保存textbox所有的信息。

Code


当改变图片的时候,同样也这样处理。

Code


其次,当程序开始运行的时候,我们获取最近的设置并且用它初始化这个程序

Code


当你第一次运行时,它不需要保存状态,使用默认设置。但是,再一次运行的时候,它获取你之前设置的状态。

第五部分:定义皮肤

现在,我们为它设置一款漂亮的皮肤,我使用的是Corrina's Rough皮肤样式。

这步很简单,仅仅需要从Corrina的样例App.Xaml中的 <ApplicationResources>节点部分复制粘贴到你的App.Xaml文件中去。然后在页面中添加如下的样式:

Code


OK,完成了这个程序了:

 附件: 您所在的用户组无法下载或查看附件


下载
完整文件:

 附件: 您所在的用户组无法下载或查看附件
demo文件:

 附件: 您所在的用户组无法下载或查看附件
 
1  /  1  页   1 跳转

快速回复帖子

标题
禁用 URL 识别
禁用表情
禁用 Discuz!NT 代码
使用个人签名
  [完成后可按 Ctrl+Enter 无刷新发布]  

版权所有 拼吾爱程序人生    Total Unique Visitors:

free hit counter

Powered by Discuz!NT 2.1.202   Copyright © 2001-2008 Comsenz Inc. 鄂ICP备07500843号
返顶部